2013-08-09 11 views

Odpowiedz

56

istnieją sposoby zasilania szablony po stronie klienta z szablonów Django ciekawych optymalizacji; Jednak biorąc pod uwagę podobieństwa między językami szablonów Django i AngularJS, prawie nigdy nie warto tutaj pracować. Sparuję obsługę statyczną AngularJS z Django REST Framework dla większości projektów tego rodzaju.

Moja urls.py kolejność operacji jest prawie zawsze adresy URL Django REST ramowe pierwszy (napisany jako ściśle jak to możliwe), a następnie ogólny wzór, który wskazuje wszystkiego innego do mojego angularjs bazowe szablonu aplikacji w moim STATIC_ROOT reż do testowania lokalnego/dev scenariusze:

if settings.DEBUG: 
    urlpatterns += patterns('django.contrib.staticfiles.views', 
     url(r'', 'serve', { 
      'document_root': settings.STATIC_ROOT, 
      'path': '/base.html'} 
     ), 
    ) 

wskazując wszystkie niedopasowanych żądań do tego samego app/szablonu, można rozpocząć korzystanie z historii-Hack metodę adresów URL i routingu, jeśli wolisz, że do hashtagami. Jeśli planujesz trzymać się tylko hashtagów, ostateczny URL może być bardziej restrykcyjny (na przykład pasujący do / (URL root) z r'^$').

W produkcji użyję odwrotnego proxy lub serwera HTTP typu wolny klient jak nginx do obsługi zawartości AngularJS (statycznej), proxy żądań usług REST do aplikacji Django WSGI.

Do komunikacji z frameworkiem Django REST preferuję obiekty JS podobne do klasy, które służą do zbierania danych do aplikacji AngularJS i Django REST Framework iz aplikacji. W tym celu używam angular-django-rest-resource do generowania klas reprezentujących klasy modeli Django, które wystawiam w widokach REST Framework.

Dla maksymalnej elastyczności w zapytaniach kątowe-django-rest-zasobów może zrobić dla zasobów, będę miał Django filtr backend zainstalowany dla ram REST jak opisano here. Dzięki temu zasoby JS mogą żądać obiektów Django ograniczonych przez parametry (np. /polls/?author=345&finished=1).

Jeśli wdrażasz operacje Django i REST w oddzielnej domenie serwerów, z których obsługiwany jest główny szablon AngularJS (na przykład, jeśli używasz innej sieci CDN innej firmy dla innej domeny HTML;), wtedy ważne jest, aby umożliwić przekazywanie żądań między domenami do tych zasobów. W tym celu polecam oprogramowanie pośrednie django-cors-headers.

Mam nadzieję, że to będzie pomocne. To nie jest najlepszy zestaw ćwiczeń, ale to był jeden, który zadziałał dla mnie.

+1

Jak zarządzałeś rejestracją i uwierzytelnianiem? – poiuytrez

+0

Mam zamiar użyć Django do części uwierzytelniania. – poiuytrez

+3

Dobre pytanie. Zostawiłem to, ponieważ każdy przypadek jest inny."Najlepszą praktyką" przyjętą przez społeczność jest tworzenie usługi AngularJS, która daje możliwość sprawdzenia statusu autoryzacji użytkownika. [Ten artykuł] (http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app) opisuje, w jaki sposób można zbudować taką usługę. W przypadku korzystania z autorskiego autorskiego Django, polecam zacząć od włączenia mechanizmu uwierzytelniania opartego na sesjach [Django REST Framework] (http://django-rest-framework.org/api-guide/authentication.html#sessionauthentication) . –

6

celu uniknięcia zamieszania w angularjs Django patrz: https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider

Zasadniczo umożliwić Django użyć {{xyz}} zmienne i kątowej użytku {[{xyz}]} zmienne ze sobą:

app.config(function($interpolateProvider) { 
    $interpolateProvider.startSymbol('{[{'); 
    $interpolateProvider.endSymbol('}]}'); 
}); 
+0

Bardzo dziękuję !!!, miałem problem z używaniem django + kątowego podczas używania {{}}. To doprowadzało mnie do szału !!! – Herman

Powiązane problemy