我想将Angular 2与Django集成在一起,但我要提出一些问题。
如何将Angular 2的插值语法从更改{{ }}
为(( ))
或类似的东西?
如何将Cookie中的CSRF令牌添加到每个HTTP帖子中?
在Angular 1中,我做了这样的事情:
.config(function($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
});
我会为基于Angular2的项目的总体设计推荐一种不同的方法。
基于Angular2的应用程序旨在用作在浏览器中运行的完全包含的应用程序(在概念上类似于移动应用程序在移动OS上的运行方式)。Angular2应用程序和后端之间应该有一个非常清晰而突然的分离。
考虑到这一点,您当然可以将Django用于后端,但不能像传统Django应用那样将框架与服务器端呈现的表单和页面一起使用。
相反,您宁愿设计后端,以便使用JSON负载公开RESTful API接口(使用POST / PUT创建和更新对象,使用GET提取/列出等),然后Angular2应用将使用该API进行创建面向用户的体验。
提交后,用于创建对象的Angular2表单将向您的后端发出HTTP POST请求,该请求包含JSON格式的数据作为其有效负载(而不是HTML表单提交产生的传统表单编码数据)
创建RESTful后端API的良好工具选择是Django REST Framework或Deliciouspie。
对于身份验证,您可以使用JWT(JSON Web令牌),并且Django REST Framework有很多不错的附加组件都支持该附加组件。
该架构具有一个主要优势:在将来,如果系统的发展需要真正的本机移动客户端(例如Android或iOS应用),则您应该能够为这些本机应用使用完全相同的RESTful API。
该架构还具有一些缺点,例如无法立即使用Django表单处理优势。
考虑到上述情况,以下是对您原始问题的答复:
- 如何将angular2的插值语法从{{}}更改为(())或类似的内容。
我建议的方法将不需要这样做。
- 如何将Cookie中的csrf令牌添加到每个http帖子?
如果使用JWT,则不需要CSRF验证。如果使用基于会话的身份验证,您仍然需要它,但是可以使用HTTP标头传递它,如Langley建议的那样。
- 将Angular2与Django集成是一个好主意吗?
主观的,但我肯定会说是的。但是,您需要确保将后端与前端明确分开。后端不应使用服务器端生成的HTML代码段或HTML表单进行响应。所有这些都应在您的Angular2应用中处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句