首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于嵌入式Angular应用程序的Django Rest框架路由

用于嵌入式Angular应用程序的Django Rest框架路由
EN

Stack Overflow用户
提问于 2017-09-06 12:43:14
回答 1查看 452关注 0票数 0

我正在尝试捆绑一个Angular应用程序,并将其作为静态内容部署在Django Rest Framework DRF应用程序中。

我根本不知道Django或DRF,但是我想控制路由,以表达如下内容:

For / admin /* -委托给内置的Django admin。

For /api/* -委托给Django Rest框架

对于/ only和/* -将其视为从“某个指定的项目文件夹”加载的静态内容,因此/映射到文件。/ static /index.html /assets/pic.jpg映射到./static/assets/pic.jpg

我还没能做到以上几点。我所拥有的就是:

index.html的模板视图位于./templates/index.html -这是来自Angular项目的模板视图,而不是Django模板。

其他webpack将手动复制的内容捆绑到./static,如vendor.|hash|.bundle.js

另一个问题是如何处理资产。在angular项目中,HTML视图通过与index.html处于同一级别的/assets引用资产

我已经使用以下命令行获得了对路径的一些控制:

代码语言:javascript
运行
复制
ng build --deploy-url=/static --output-path=../backend/tutorial/static

deploy-url arg导致index.html中捆绑的资产引用带有/static前缀,这意味着Django可以为它们提供服务(但由于某种原因不能为favicon.ico提供服务)。

输出路径arg将所有资源转储到默认"dist“文件夹之外的其他位置。

代码语言:javascript
运行
复制
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^api/', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    url(r'^', TemplateView.as_view(template_name="index.html")),
]

Url模式如下所示。

代码语言:javascript
运行
复制
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]

STATIC_URL = '/static/'

这些是静态设置。我需要的是能够说出"/static“和"/assets”都是静态资产文件夹。

我不确定什么是TemplateView (urlPatterns)。也许有一个StaticFilesView或者什么东西可以将一个网址映射到磁盘上的路径?

EN

回答 1

Stack Overflow用户

发布于 2017-11-18 13:52:40

块引用这些是静态设置。我需要的是能够说出"/static“和"/assets”都是静态资产文件夹。区块引用

您可以通过以下步骤来实现此目的:

  1. 在NGINX站点配置文件中添加/assets静态目录:

服务器{ ....……#您的Django项目的静态文件-所需的位置/static {别名/路径/到... /;}#您的Angular项目的静态文件位置/assets {别名/路径/到.../assets;}...……}在您的Django urls.py中添加

从django.views.static导入用作static_serve urlpatterns = ....url(r'^assets/(?P.*)$',static_serve,{'document_root':'/path/to.../assets'}),....……

就是这样,。您不必在Django设置中触及静态配置。

代码语言:javascript
运行
复制
    STATIC_URL = '/static/'
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
    STATIC_ROOT = os.path.join(DATA_DIR, 'static')

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'reservation_exchange', 'static'),
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46066924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档