Django - urls.py中的静态文件夹映射

时间:2016-02-06 17:51:13

标签: python django

我的django应用程序中有以下文件结构

|-myapp
|---static
|-----adminapp
|-----clientapp
|-----commonapp
|-----css
|-----fonts
|-----js
|---templates
|-----administration
|-------index.html
|-----client
|-------index.html

这是因为我想构建两个角度应用程序,一个用于用户(static/clientapp),另一个用于管理员(static/adminapp)。

templates/administration/index.htmltemplates/client/index.html相似,包含以下代码:

<head>
    <script src="static/js/angular.js"></script>
    <script src="static/adminapp/app.js"></script>
</head>
<body ng-app="adminapp"></body>

我的管理员和客户端应用程序的链接应为:

http://example.com/administration/  
http://example.com/client/

问题是我应该在urls.py添加哪些条目,让两个角度应用访问同一个static文件夹。

必须通过以下方式:

url(r'^administration/static/$', STATIC_ROOT),
url(r'^client/static/$', STATIC_ROOT)

但我是django新手,我不知道如何正确定义它。

2 个答案:

答案 0 :(得分:1)

在制作中你不应该让Django处理静态文件,所以它应该在你的nginx / appache配置中设置administation/static/client/static/的正确路径。

出于开发目的,您可以添加以下内容:

if settings.DEBUG:
    urlpatterns += [
        url(r'^administation/static/(?P<path>.*)$', ' django.views.static.serve', {'document_root': settings.ADMIN_STATIC_ROOT}),
        url(r'^client/static/(?P<path>.*)$', ' django.views.static.serve', {'document_root': settings.CLIENT_STATIC_ROOT}),
   ]

然后,您只需在设置中定义ADMIN_STATIC_ROOTCLIENT_STATIC_ROOT

答案 1 :(得分:0)

解决方案是在网址中使用/来静态资源。

e.g。

<script src="/static/js/angular.js"></script>

然后app base url无所谓。