我即将开始一个项目,客户端为AngularJS,服务器端为Django.
让他们像最好的朋友一样工作的最佳实践是什么(静电文件、身份验证、部署等)
我即将开始一个项目,客户端为AngularJS,服务器端为Django.
让他们像最好的朋友一样工作的最佳实践是什么(静电文件、身份验证、部署等)
有一些方法可以通过Django模板支持客户端模板进行有趣的优化;但是,考虑到Django和AngularJS的模板语言之间的相似之处,这里的努力几乎是不值得的.我会把天使JS的静电和大多数这类项目的Django REST Framework%搭配起来.
我的第urls.py
个操作顺序几乎总是首先是Django睡觉框架URL(编写得尽可能严格),然后是一个通用模式,该模式将其他所有内容指向我的STATIC_ROOT
目录中的基本AngularJS应用程序模板,以用于本地测试/开发场景:
if settings.DEBUG:
urlpatterns += patterns('django.contrib.staticfiles.views',
url(r'', 'serve', {
'document_root': settings.STATIC_ROOT,
'path': '/base.html'}
),
)
通过将所有不匹配的请求指向同一个应用程序/模板,你可以开始使用URL和路由的历史黑客方法,如果你更喜欢这种方法,而不是标签.如果你只打算坚持使用标签,那么最终的URL匹配可能会更严格(例如,将/
(URL根)与r'^$'
匹配).
在生产中,我将使用反向代理或慢客户端HTTP服务器(如nginx)来服务AngularJS(静电)内容,将睡觉服务请求代理到Django WSGI应用程序.
为了与Django睡觉框架通信,我更喜欢使用类似类的JS对象来将数据编组到AngularJS应用程序和Django睡觉框架.为此,我使用angular-django-rest-resource来生成表示我在睡觉框架视图中公开的Django模型类的类.
为了让django rest资源能够为资源提供最大的灵活性,我将为rest框架安装django-filter后端,如here所述.这允许JS资源请求受参数约束的Django对象(例如/polls/?author=345&finished=1
).
如果您将Django和睡觉操作部署在提供AngularJS Main模板的不同服务器域上(例如,如果您对HTML使用不同Internet域上的第三方CDN),那么允许对这些资源的跨域请求是很重要的.为此,我推荐django-cors-headers中间件.
我希望这对你有帮助.这不是the个最佳实践集,但它对我很管用.