Django模板: 应用程序目录中的静态文件

3
在Django的settings.py文件中,我们有:
STATIC_URL = '/static/'

在每个应用程序目录中,我都有一个静态文件夹,用于存放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

我想要创建这样的URL:

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

尝试使用 STATIC_URL = /templates/static/ - doru
无法工作:我想要这样的URL ---> myapp/templates/static/ - javad75
为什么不将静态目录与myapp并列,而不是在每个应用程序中创建它呢? - Kamlesh
3个回答

2

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


0

你使用声明静态文件的方式不正确,在你的例子中:

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

在声明 CSS 文件路径时,您正在关闭双引号, 您应该像这样结合使用双引号和单引号:

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

0

@Daniel Roseman是正确的。始终使用有意义的名称。

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

在每个应用程序级别的静态目录中始终使用命名空间。

app1

app1/static/app1/files

应用程序2

app2/static/app2/files 

静态文件命名空间

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接