【问题标题】:What is the right way to setup urls.py for django-rest-framework + angular-route + static files?为 django-rest-framework + angular-route + 静态文件设置 urls.py 的正确方法是什么?
【发布时间】:2016-04-06 18:44:11
【问题描述】:

我理解我想要做什么的概念(这里有一个相当不错的问题:Django, REST and Angular Routes

Django 有一个 DRF、Admin 路由,并且至少需要一个路由,用于 Angular 页面。

但我不确定实现细节,尤其是前端/静态文件的放置位置,urls.py 中放置的内容,以及如何为 dev+production 配置它。

我的网址格式目前如下所示:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

理想情况下,在生产中,我希望在不接触 django 的情况下提供 HTML - 直接来自 nginx 或类似的(可能使用 AWS EB,但这超出了本问题的范围)。
对于 Dev - 我不介意,只要它有效!

跳过 Angular 的 djangos 模板系统会很棒,而不是改变 angulars 运算符。我不打算使用 django 模板(在 djangos admin 和 DRFs 可浏览视图中除外)

【问题讨论】:

  • 请看这里,它是关于 BackboneJS 的,但就反向代理而言,对于 AngularJS 来说也是一样的:stackoverflow.com/questions/32148124/…
  • 这总结了我如何部署我的 ng 应用程序,nginx 提供静态文件,ng 应用程序通过 /api 路由访问 Django DRF,如果你有其他路由,如 /api-auth 或/admin 只需将它们添加到 nginx 以将它们转发到 Django
  • 请注意,例如HTML5 模式下的角度路由不必绑定到根 URL /,只要您在 ng 应用程序的 HTML 页面(加载应用程序)
  • 感谢您的提示;)

标签: python angularjs django rest angular-ui-router


【解决方案1】:

对于开发,我在 urls.py 主文件的末尾使用类似的东西来提供来自各个目录的静态文件:

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    from django.conf.urls.static import static

    # this connects STATIC_URL to STATIC_ROOT
    urlpatterns += staticfiles_urlpatterns()

    # connect other paths to directories
    urlpatterns += static(settings.MEDIA_URL, 
        document_root=settings.MEDIA_ROOT)
    urlpatterns += static('/app/', 
        document_root=join(settings.BASE_DIR, '../ng_app/'))

对于生产,您设置网络服务器来处理请求。首先是/admin//api//api-auth/ 等已知路由以及/static/ 中的文件。

然后是一条包罗万象的路线/,它将始终为您的index.html 提供任何路线的Angular 应用程序。这样 Angular 中的 HTML5 路由将始终首先加载应用程序,然后应用程序使用自己的路由从 API 数据构建正确的页面。

实际的应用文件可以在任何地方,甚至在不同的服务器上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2014-03-16
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多