Vorrei raccomandare un approccio diverso alla progettazione generale del progetto basato su Angular2.
Un'applicazione basata su Angular2 è pensata per essere utilizzata come un'applicazione completamente contenuta nel browser (simile concettualmente a come un'applicazione mobile viene eseguita su un sistema operativo mobile). Ci dovrebbe essere una separazione molto chiara e improvvisa tra la tua app Angular2 e il back-end.
Con questo in mente, puoi sicuramente usare Django per il tuo back-end ma non nel modo in cui una tradizionale app Django userebbe il framework con moduli e pagine renderizzati lato server.
Invece, si preferisce progettare il back-end in modo da esporre un'interfaccia API RESTful con carichi utili JSON (con POST/PUT utilizzato per creare e aggiornare gli oggetti, arriva a prendere/list, ecc), allora la vostra applicazione Angular2 consumerebbe quell'API per creare l'esperienza dell'utente.
Quando presentato, una forma Angular2 per la creazione di un oggetto avrebbe emesso una richiesta HTTP POST al back-end che contiene i dati JSON-formattati come il suo carico utile (e non la forma codificata di dati tradizionali derivante da un invio di form HTML)
Le buone opzioni di strumenti per la creazione dell'API backend RESTful sono Django REST Framework o Tastypie.
Per l'autenticazione, è possibile utilizzare JWT (Token Web JSON) e ci sono buoni add-ons per Django REST Framework che lo supportano.
Questa architettura ha un grande vantaggio: in futuro, se l'evoluzione del tuo sistema richiede client mobili nativi reali (ad esempio app Android o iOS), dovresti essere in grado di utilizzare la stessa API RESTful per quelle app native .
Questa architettura ha anche degli svantaggi, come l'impossibilità di usare la forma di manipolazione di Django, pronta all'uso.
Considerando quanto sopra, qui le risposte alle vostre domande originali:
- Come posso cambiare la sintassi di interpolazione per angular2 da {{}} a (()) o qualcosa di simile.
Non ci sarebbe bisogno di quello usando l'approccio che suggerisco.
- Come posso aggiungere il token csrf dai cookie a ogni post http?
Se si utilizza JWT non avrebbe bisogno di convalida CSRF. Se si utilizza l'autenticazione basata su sessione, sarebbe comunque necessario ma è possibile passarlo utilizzando un'intestazione HTTP, come suggerito da Langley.
- È una buona idea integrare Angular2 con Django?
Soggettivo ma direi di si, sicuramente. Tuttavia, è necessario assicurarsi di separare chiaramente il back-end dal frontend. Il back-end non dovrebbe rispondere con snippet HTML o moduli HTML generati dal lato server. Questo dovrebbe essere gestito all'interno della tua app Angular2.
Non modificare la sintassi di interpolazione. I modelli di Django e i modelli angolari non devono mai essere mixati; I modelli angolari sono file statici dal punto di vista di Django. –
Inoltre, suggerirei di separare completamente il back end Django dal front-end Angular 2. Usa qualcosa come Django Rest Framework per creare un servizio ReST a cui il tuo front-end Angular 2 può accedere. – Zyzle
che dire di [angular-jwt] (https://github.com/auth0/angular-jwt) per la tua seconda domanda? – Mitchapp