Есть способы питания на стороне клиента шаблоны из шаблонов Django для интересных оптимизации; однако, учитывая сходство между языковыми шаблонами Django и AngularJS, это почти никогда не стоит усилий здесь. Для большинства проектов такого типа я свяжусь с статичной службой AngularJS с Django REST Framework.
Мой urls.py
порядок операций почти всегда Django REST Framework URL-адреса первого (написано так строго, как это возможно), а затем общий шаблон, который указывает все остальное в шаблон приложения базы AngularJS в моем STATIC_ROOT
директории для локального тестирования/DEV сценарии:
if settings.DEBUG:
urlpatterns += patterns('django.contrib.staticfiles.views',
url(r'', 'serve', {
'document_root': settings.STATIC_ROOT,
'path': '/base.html'}
),
)
указывая все несовпадающие запросы в тот же приложении/шаблон, вы можете начать использовать историю-хак метод URL-адреса и маршрутизацию, если вы предпочитаете, что хэштег. Если вы планируете придерживаться хэштегов, окончательный URL-адрес может быть более строгим (например, сопоставление /
(URL-адрес root) с r'^$'
).
В производстве я использую HTTP-сервер обратного прокси-сервера или медленного клиента, такой как nginx, для обслуживания содержимого AngularJS (статического), проксирования запросов на службы REST в приложение Django WSGI.
Для связи с Django REST Framework я предпочитаю объекты класса JS, предназначенные для маршалирования данных в приложение AngularJS и Django REST Framework и из него. Для этого я использую angular-django-rest-resource для создания классов, представляющих классы модели Django, которые я просматриваю в представлениях REST Framework.
Для обеспечения максимальной гибкости в запросах угловых Джанго-остальное-ресурс может сделать за ресурсы, я буду иметь Джанго-фильтр бэкенд, установленный для REST Framework, как описано here. Это позволяет ресурсам JS запрашивать объекты Django, ограниченные параметрами (например, /polls/?author=345&finished=1
).
Если вы развертываете операции Django и REST в отдельном домене серверов, с которых обслуживается основной шаблон AngularJS (например, если вы используете сторонний CDN в другом домене Интернета для HTML), тогда важно разрешить междоменные запросы этим ресурсам. Для этого я рекомендую промежуточное ПО django-cors-headers.
Надеюсь, это полезно. Это не набор лучших практик, но это тот, который работал для меня.
Как вы управляли регистрацией и аутентификацией? – poiuytrez
Я планирую использовать Django для части аутентификации. – poiuytrez
Хороший вопрос. Я оставил его, потому что каждый случай отличается.«Лучшая практика», принятая сообществом, создает услугу «AngularJS», которая дает вам синглтон для запроса статуса пользователя. [Эта статья] (http://blog.brunoscopelliti.com/deal-with-users-authentication-in-angularjs-web-app) подробно описывает, как можно построить такую услугу. В случае использования встроенного автозапуска Django я бы рекомендовал начать с включения [авторизации на основе сеанса Django REST Framework на основе сеанса] (http://django-rest-framework.org/api-guide/authentication.html#sessionauthentication) , –