poi*_*rez 61 django rest angularjs
我即将为客户端启动AngularJS项目,为服务器端启动Django项目.
让他们像最好的朋友一样工作的最佳做法是什么(静态文件,身份验证,部署等)
Jus*_*hur 56
有一些方法可以从Django模板为客户端模板供电,以进行有趣的优化; 然而,鉴于Django和AngularJS的模板语言之间的相似性,这几乎不值得努力.对于大多数此类项目,我将AngularJS的静态服务与Django REST Framework配对.
我urls.py
的操作顺序几乎总是首先是Django REST框架URL(尽可能严格编写),然后是一个通用模式,它将我的基础AngularJS应用程序模板中的所有其他内容指向STATIC_ROOT
本地测试/开发场景:
if settings.DEBUG:
urlpatterns += patterns('django.contrib.staticfiles.views',
url(r'', 'serve', {
'document_root': settings.STATIC_ROOT,
'path': '/base.html'}
),
)
Run Code Online (Sandbox Code Playgroud)
通过将所有不匹配的请求指向同一个应用程序/模板,您可以开始使用URL和路由的历史记录方法(如果您更喜欢使用哈希标记).如果您只打算坚持使用主题标签,那么您的最终URL匹配可能更严格(例如匹配/
(URL根)r'^$'
).
在生产中,我将使用反向代理或慢客户端HTTP服务器(如nginx)来提供AngularJS(静态)内容,将对REST服务的请求代理到Django WSGI应用程序.
为了与Django REST Framework进行通信,我更喜欢使用类似于类的JS对象来封送与AngularJS应用程序和Django REST Framework之间的数据.为此,我使用angular-django-rest-resource生成表示我在REST Framework视图中公开的Django模型类的类.
对于在查询角Django的休息资源可以使资源最大的灵活性,我将有Django的过滤器描述安装了REST框架后端这里.这允许JS资源请求受参数约束的Django对象(例如/polls/?author=345&finished=1
).
如果您在服务于AngularJS主模板的单独服务器域上部署Django和REST操作(例如,如果您在HTML的其他Internet域上使用第三方CDN),那么它就是允许跨域请求这些资源很重要.为此,我推荐使用django-cors-headers中间件.
我希望这是有帮助的.这不是在最佳实践集,但它是一个已经为我工作.
为了防止Angularjs与Django混淆,请参考:https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider
基本上是为了让Django能够使用{{xyz}}变量和angular来一起使用{[{xyz}]}变量:
app.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{[{');
$interpolateProvider.endSymbol('}]}');
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26063 次 |
最近记录: |