Django模板:app目录中的静态文件

时间:2016-02-17 09:26:27

标签: python django

在Django settings.py 文件中,我们有

STATIC_URL = '/static/'

在每个app目录中我都有css,js文件的静态文件夹。

例如:

├── myapp
│   ├── migrations
│   ├── __pycache__
│   ├── static
│   └── templates

我在* .html文件中使用{% static "......." %}

例如

  <link rel="stylesheet" href="{% static "style/fesahat.css" %}" />
  <link rel="stylesheet" href="{% static "style/loginStyle.css" %}" />

在输出渲染中,django创建这样的url:

mysite.com/static/style/fesahat.css
mysite.com/static/style/loginStyle.css

我想创建这样的网址:

mysite.com/myapp/templates/static/style/fesahat.css
mysite.com/myapp/templates/static/style/loginStyle.css

2 个答案:

答案 0 :(得分:2)

不,不。静态文件不是模板;不要把它们放在那里。

答案 1 :(得分:0)

@Daniel Roseman是正确的。始终使用含义全名。

STATIC_URL = '/static/' #This is URL prefix so use any prefix

始终在每个应用程序级静态目录中使用名称间隔。

app1

app1/static/app1/files

app2

app2/static/app2/files 

静态文件的命名空间

现在,我们也许可以将静态文件直接放在my_app / static /中(而不是创建另一个my_app子目录),但是实际上这是一个坏主意。 Django将使用找到的第一个名称与之匹配的静态文件,如果在其他应用程序中具有相同名称的静态文件,则Django将无法区分它们。我们需要能够将Django指向正确的位置,而确保这一点的最佳方法是对它们进行命名。也就是说,将这些静态文件放置在为应用程序本身命名的另一个目录中。

您可以通过指定前缀在STATICFILES_DIRS中对静态资产进行命名空间。