繁体   English   中英

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

[英]What is the right way to setup urls.py for django-rest-framework + angular-route + static files?

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

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

但是我不确定实现细节,尤其是在哪里放置前端/静态文件,在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,但这不在此问题范围内)。
对于开发人员-我不介意,只要有效!

跳过djangos模板系统以获得角度会更好,而不是更改角度运算符。 我不打算使用Django模板(在djangos admin和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/文件。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM