我理解我想做什么的概念(这里有一个很好的问题: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数据构建正确的页面。
实际的应用程序文件可以在任何地方,甚至在不同的服务器上。