Quelles sont les meilleures pratiques pour utiliser AngularJS avec Django

Je suis sur le sharepoint démarrer un projet avec AngularJS pour le côté client et Django pour le côté serveur.

Quelles sont les meilleures pratiques pour les faire fonctionner comme les meilleurs amis (fichiers statiques, authentification, déploiement, etc.)

Il existe des moyens d’alimenter vos modèles côté client à partir de modèles Django pour des optimisations intéressantes; Cependant, compte tenu des similitudes entre les langages de modèles de Django et d’AngularJS, l’effort en vaut presque la peine ici. Je vais associer la dissortingbution statique de AngularJS avec la structure REST de Django pour la plupart des projets de ce type.

Mon ordre d’opération urls.py correspond presque toujours aux URL de Django REST Framework (écrites aussi ssortingctement que possible), suivies d’un modèle générique qui pointe tout le rest vers mon modèle d’application AngularJS de base dans mon STATIC_ROOT pour les scénarios de test / dev locaux:

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

En pointant toutes les requêtes sans correspondance vers la même application / le même modèle, vous pouvez commencer à utiliser la méthode history-hack des URL et du routage si vous préférez les hashtags. Si vous prévoyez uniquement de vous en tenir aux hashtags, votre correspondance URL finale pourrait être plus ssortingcte (par exemple, correspondance / (URL root) avec r'^$' ).

En production, j’utiliserai un serveur HTTP inversé ou un client HTTP lent comme nginx pour servir le contenu AngularJS (statique), en transmettant les demandes de services REST à l’application WSGI Django.

Pour communiquer avec le framework REST de Django, je préfère avoir des objects JS de type classe pour regrouper les données depuis et vers l’application AngularJS et le framework REST Django. Pour cela, j’utilise angular-django-rest-resource pour générer des classes qui représentent les classes du modèle Django que j’expose dans les vues de la structure REST.

Pour une flexibilité maximale dans les requêtes que angular-django-rest-resource peut apporter aux ressources, j’aurai le backend django-filter installé pour le framework REST comme décrit ici . Cela permet aux ressources JS de demander les objects Django contraints par des parameters (par exemple /polls/?author=345&finished=1 ).

Si vous déployez les opérations Django et REST sur un domaine de serveurs distinct à partir duquel le modèle principal AngularJS est servi (par exemple, si vous utilisez un CDN tiers sur un autre domaine Internet pour le HTML), alors important d’autoriser les requêtes interdomaines à ces ressources. Pour cela, je recommande le middleware django-cors-headers .

J’espère que ceci est utile. Ce n’est pas la meilleure pratique, mais c’est celle qui a fonctionné pour moi.

Pour éviter de confondre Angularjs avec Django, référez-vous à: https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider

Fondamentalement, pour permettre à Django d’utiliser les variables {{xyz}} et angulars pour utiliser les variables {[{xyz}]}:

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