我想把角2和Django 结合起来,我有几个问题要问.

  1. 如何将Angular 2的插值语法从{{ }}更改为(( ))或类似的内容?

  2. 如何将来自cookie的CSRF令牌添加到每个HTTP帖子?

在Angular 1中,我做了这样的事情:

.config(function($httpProvider) {
    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
});
  1. 将Angular 2与Django集成是个好主意吗?

推荐答案

我建议您对基于Angular2的项目的总体设计采用不同的方法.

基于Angular2的应用程序应该用作在浏览器中运行的完全包含的应用程序(在概念上类似于移动应用程序在移动操作系统上运行的方式).在你的Angular2应用程序和后端之间应该有一个非常明确和突然的分离.

考虑到这一点,您当然可以在后端使用Django,但不能像传统的Django应用程序那样使用服务器端呈现表单和页面的框架.

相反,你更愿意设计你的后端,让它公开一个带有JSON有效载荷的RESTful API接口(POST/PUT用于创建和更新对象,GET to fetch/list等),然后你的Angular2应用程序将使用该API来创建面向用户的体验.

提交时,用于创建对象的Angular2表单将向后端发出HTTP POST请求,其中包含JSON格式的数据作为其有效负载(而不是HTML表单提交产生的传统表单编码数据)

创建RESTful后端API的好工具选项是Django REST FrameworkTastypie.

对于身份验证,你可以使用JWT(JSON Web Token),有很多Django睡觉框架都支持这一点.

该架构有一个主要优势:将来,如果您的系统发展需要真正的原生移动客户端(例如Android或iOS应用程序),您应该能够为这些原生应用程序使用完全相同的RESTful API.

这种架构也有缺点,比如无法使用Django表单处理开箱即用的好东西.

考虑到上述情况,以下是对您最初问题的回答:

  1. 如何将angular2的插值语法从{{}更改为(())或类似的内容.

使用我建议的方法就没有必要了.

  1. 如何将Cookie中的CSRF令牌添加到每个http帖子中?

如果使用JWT,则不需要CSRF验证.如果使用基于会话的身份验证,您仍然需要它,但正如兰利建议的那样,您可以使用HTTP头传递它.

  1. 把Angular2和Django结合起来是个好主意吗?

主观的,但我会说是的,绝对是这样.但是,您需要确保清楚地将后端和前端分开.后端不应使用服务器端生成的HTML片段或HTML表单进行响应.这些都应该在你的Angular2应用程序中处理.

Angular相关问答推荐

使用路由进行测试.为每次测试导航堆栈

无效的ICU消息.缺少';}';|Angular material 拖放(&A)

筛选器不会从文本输入触发更改事件

AOS中的数据绑定--可能吗?

Angel Project Build从Angel 8升级后,从12MB增加到90MB

ANGLE v16独立组件不能与拦截器一起工作?

崩溃Angular项目Docker容器

为什么Angular的ViewEncapsulation枚举有没有值为1的键?

从 Angular 应用程序中删除散列标签后无法从 Apache 访问 API

以 Angular 形式添加动态控件失败

当我ng serve时,Angular CLI 提示TypeError: callbacks[i] is not a function

如何在 Angular 5 HttpInterceptor 中添加多个标头

如何以Angular 获取嵌套表单组的控件

如何设置背景 colored颜色 IONIC 4

如何从 EventEmitter 函数返回值?

在 Angular 2 中使用 store (ngrx) 有什么好处

Angular CLI 输出 - 如何分析Bundle 文件

为什么用?模板绑定中的运算符?

Angular 4 错误:没有 HttpClient 的provider提供者

Angular2:子组件访问父类变量/函数