在app1中,我正在尝试从app2加载静态文件。我在项目 settings.py
中没有设置STATICFILES_FINDERS
,这意味着 Django 在应用程序目录中找到静态子目录时将使用默认AppDirectoriesFinder
。
问题:
在app1
的模板文件中,我可以很容易地为 app1 生成静态文件的 url。但是如果我想app1
模板文件为app2
的静态文件生成 url,链接不起作用。如何在app1
生成app2
的静态文件?
App1 模板文件:
{% load static %}
<img src="{% static "app1/example.jpg" %}"> <!-- ok -->
<img src="{% static "app2/example.jpg" %}"> <!-- link broken -->
网页输出:
<img src="http://localhost:8000/static/app1/example.jpg">
<img src="http://localhost:8000/static/app2/example.jpg">
我遇到了同样的问题。我处理了它,将这个变量设置为 settings.py
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'app1/static/'),
os.path.join(BASE_DIR, 'app2/static/'),
]
因此,无论您从哪个应用程序调用它,这两个目录都可以在静态模板标记中使用。
我正在使用 django 2.1。观察:1 - 也许这是在使用 startapp 命令时默认设置的。艾德克。2 - BASE_DIR 是通往 settings.py 的 ABS 路径。
我找到了解决方案。请注意,项目文件夹中的目录(其名称与项目文件夹完全相同)不是应用程序。起初以为它是最初的应用程序,是由 Django 自动创建的,但事实并非如此。
如果你有两个应用,并且想要在它们之间加载静态文件,则上面的代码示例有效。
只需将其添加到您的 settings.py 中(来自 Django 文档)
STATICFILES_DIRS = [
BASE_DIR / "static",
'var/www/static/',
]