首先,您应该考虑完全不使用Django模板和表单。(假设您正在研究更大的东西)
Django是一个非常酷的框架,但是我发现它的这2个构建基块有所限制)。
与Yeoman一起使用的JS框架应负责构建HTML。
Django-Yeoman集成
开发架构
Yeoman应该提供html(模板替换)和其他静态文件+照顾您选择的JS框架。
如果前端需要从后端获取/向后端提交一些数据,它应该向提供静态内容的同一台服务器发出请求(在引擎盖下,Yeoman使用Node.js作为该服务器)。
但是等等… Node.js服务器应该如何了解后端逻辑?
您可以使用grunt-connect-proxy将任何请求转发到另一台服务器-在这种情况下为Django。
我发现此grunt-connect-proxy设置指南特别有用。
通过向相同的套接字地址(
IP:port)发出后端请求,您无需执行CORS或疯狂的工作,例如在构建应用程序的生产就绪版本时就可以解析整个前端代码,而不必替换用于具有适合生产的一种开发。
生产与部署
运行时,
grunt它将在
dist子目录中打包前端静态文件的生产就绪版本。
在将django应用程序打包提交之前,您基本上将htmls和其余的静态内容文件复制到
static/your_app。
我决定将Angular的htmls作为静态内容提供-
使它们成为Django的模板会引起太多麻烦(标记冲突,静态加载器等)。当部署了一些django项目(包含django应用程序)时,由node服务的dev设置中的静态文件将由django服务。
换句话说:在生产中,您只需要一台服务器-django使用的一台服务器。
只有在开发期间,您才需要从yeoman提供的模糊嗡嗡声中受益,例如:
- LiveReload
- 整理你的代码
- 发电机
- …
注意:
我已经读过Yeoman团队正在计划提供一种更好的将yeoman与Web框架集成的方法。不知道他们想怎么做,也许是生成器的类似解决方案(每个框架单独生成器)。
样品
您可以查看我当前正在 使用的django应用程序:https :
//github.com/vucalur/django-wibses/
它使用Angular JS,上面我只是描述了它的体系结构:)
注意: 并不是这样-尚未完成:)但是到目前为止,除了CSRF保护之外,开发设置已经完成。
好吃的
我们正在考虑在提及的应用程序中使用Tastypie,但只有在手动编写RESTful API时才会变得很艰巨。因此,我认为是否使用Tastypie由您决定。
进一步阅读
我基于此设置。
但是,如果您对Java Web应用程序有所了解,就应该看看它们(我希望Django-
Yeoman集成的工作方式类似于Java(Maven)-Yeoman集成的工作方式):
- http://addyosmani.com/blog/making-maven-grunt/
- https://github.com/trecloux/yeoman-maven-plugin(在Addy的帖子中提到)
- http://blog.tartachuc.org/2013/06/11/tomcat-maven-angular-grunt-et-yeoman-sont-dans-un-bateau/(在Addy的帖子中提到)
- http://naleid.com/blog/2013/01/24/calling-gruntjs-tasks-from-gradle/
- http://blog.tfnico.com/2013/07/considerations-for-javascript-in-modern.html(不直接相关,但仍值得阅读)



