11

Pracuję nad czymś podobnym do Disqus, a utworzyłem fragment kodu JavaScript strony trzeciej, który użytkownik będzie osadzał w stronę internetową i widżet oceny dla każdego artykułu. Użytkownicy mogą oceniać artykuł za pomocą widżetu. Wszystko działa, serwer wysyła żądanie, ale ja jawnie robię instancję obiektu artykułu.Jak automatycznie zapisać nagłówek dla każdego nowego artykułu pod warunkiem, że mój skrypt js trzeciej strony jest osadzony na stronie internetowej

Muszę to zautomatyzować, tak jak w przypadku nowego artykułu na stronie internetowej, sprawdzanie, czy żądanie pochodzi z uwierzytelnionej witryny internetowej i utworzenie nowego widgetu oceny w bazie danych w Django i Django-rest-framework.

Używam Pythona 2.7.

Pytanie: Jak automatycznie zapisać nagłówek nowego artykułu, jeśli jest nowy i uwierzytelniony w bazie danych?

Wiem, że muszę użyć modelu do wdrożenia tego, ale nie jestem pewien, jak wykonać rzeczywistą implementację.

EDIT:

Powiedzmy to zapytanie

https://example.com/embed/comments/?base=default&version=edb619270a92c3035c453faa7c9444d1&f=example&t_i=article_2431522&t_u=http%3A%2F%2Fwww.firstpost.com%2Fbollywood%2Flatest-trailer-of-spectre-is-out-james-bond-is-back-all-guns-and-cars-blazing-2431522.html%09&t_e=Latest%20trailer%20of%20%27Spectre%27%20is%20out%3A%20James%20Bond%20is%20back%20all%20guns%20and%20cars%20blazing&t_d=Latest%20trailer%20of%20%27Spectre%27%20is%20out%3A%20James%20Bond%20is%20back%20all%20guns%20and%20cars%20blazing&t_t=Latest%20trailer%20of%20%27Spectre%27%20is%20out%3A%20James%20Bond%20is%20back%20all%20guns%20and%20cars%20blazing&s_o=default

W moim modelu muszę zapisać następujące, jak f do forum (gdzie forum=models.CharField("short name", max_length=30, unique=True)

Wiem, że muszę do przeanalizowania adresu URL dla każdego &, ale nie wiem jak. Sprawdziłem dokumentację reszta-ram, ale nie zrozumiałem tego.

`f ---->forum, 
    t_i----> identifier, 
    t_u----> url 
    t_s----> slug, 
    t_e----> title, 
    t_d----> documentTitle, 
    t_t----> title || documentTitle, 
    t_c ---->category, 
    s_o----> sortOrder, 
    l----> language` 

Jaka jest najlepsza praktyka do zapisania? Nadzieja to pomaga

+0

to dość otwarte pytanie. w jaki sposób można go opracować i uczynić bardziej szczegółowym? – miki725

+0

Musisz zajrzeć do ochrony CSRF, jeśli umieszczasz ją w witrynie innej domeny. Jeśli chodzi o tworzenie instancji modelu, robisz AJAX POST (zakładając, że korzystasz z Django Rest Framework) do swojego serwera z widgetu javascript, kiedy tylko jest to konieczne. Spowoduje to utworzenie nowej instancji dowolnego modelu, który chcesz utworzyć. –

+0

@ miki725 Dodałem szczegóły – n00b

Odpowiedz

4

Zamierzam po prostu odpowiedzieć na pytanie pan stwierdził na koniec: „Jak mogę automatycznie zapisać nagłówek nowego artykułu”

masz rację, trzeba stwórz model artykułu odzwierciedlający artykuły stron trzecich.

Będzie potrzebne pole dla tytułu/nagłówka (prawdopodobnie CharField), upewnij się, że jest wystarczająco duży i/lub zajmuj się przypadkami, w których tytuł jest większy.

Będziesz także potrzebować unikalnego identyfikatora dla każdego artykułu. Najlepiej, zamiast używać domyślnego Django, będziesz używać tego, co strona zewnętrzna używa jako unikalnego identyfikatora, jako odwzorowania jeden do jednego.

Następnie, gdy pojawi się żądanie, można użyć metody get_or_create, aby upewnić się, że artykuł istnieje w bazie danych.

+0

Już wymyśliłem wszystko oprócz twojego ostatniego zdania. To jest właśnie moje pytanie. Czy mógłbyś rozwinąć ostatnie zdanie? Nie chcę kodu. Czy muszę zaktualizować serializers.py? Z góry dziękuję, Kiwi – n00b

+2

Jest to część zestawu zapytań API https://docs.djangoproject.com/en/1.8/ref/models/querysets/#get-or-create – OllyTheNinja

+0

Nie jest domyślnie wywoływana przez zestawienie ani przez api. W tym przypadku chciałbym powiedzieć, że trzeba nadpisać metodę get_object widoku/viewset i tutaj, aby wykonać pobieranie lub tworzenie. – Roba