为django rest framework+angular route+静态文件设置urls.py的正确方法是什么



我理解我想做什么的概念(这里有一个很好的问题:Django、REST和Angular Routes)

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

但我不确定实现的细节,特别是前端/静态文件放在哪里,在urls.py中放什么,以及如何为dev+生产配置它。

我的url模式当前如下:

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,但这超出了这个问题的范围)
对于德夫-我不介意,只要它有效!

跳过angular的djangos模板系统会很好,而不是改变angulars操作符。我不打算使用django模板(除了在djangos管理和DRF可浏览视图中)

对于开发,我在主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/'))

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

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

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

相关内容

最新更新