Django - 从另一个应用程序加载静态文件

Fus*_*ion 6 django django-apps django-staticfiles

在 app1 中,我试图从 app2 加载静态文件。我STATICFILES_FINDERS在 project 中设置了 no settings.py,这意味着Django AppDirectoriesFinder在 app 目录中找到 static 子目录时将使用默认值

问题

在 的模板文件中app1,我可以非常轻松地为 app1 生成静态文件的 url。但是,如果我希望app1模板文件为 的静态文件生成 url app2,则链接不起作用。我怎样才能app1生成静态文件app2

App1 模板文件:

{% load static %}
<img src="{% static "app1/example.jpg" %}"> <!-- ok -->
<img src="{% static "app2/example.jpg" %}"> <!-- link broken -->
Run Code Online (Sandbox Code Playgroud)

HTML 输出

<img src="http://localhost:8000/static/app1/example.jpg">
<img src="http://localhost:8000/static/app2/example.jpg"> 
Run Code Online (Sandbox Code Playgroud)

小智 6

我有同样的问题。我处理它在 settings.py 中设置这个 var

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'app1/static/'),
    os.path.join(BASE_DIR, 'app2/static/'),
]
Run Code Online (Sandbox Code Playgroud)

因此,无论您从哪个应用程序调用它,这两个目录都可以在静态模板标签中使用。

我正在使用 Django 2.1。Obs: 1 - 当您使用 startapp 命令时,这可能是默认设置的。同上。2 - BASE_DIR 是 settings.py 的绝对路径。


Fus*_*ion 1

我找到了解决方案。请注意,项目文件夹中的目录(其名称与项目文件夹完全相同)不是应用程序。起初以为这是最初的应用程序,由 Django 自动创建,但事实并非如此。

如果您有两个应用程序,并且想要在它们之间加载静态文件,则上面的代码示例有效。