在app1中我试图从app2加载静态文件。我在项目settings.py
中设置了AppDirectoriesFinder
,这意味着Django will use default app1
在应用目录中找到静态子目录时。
问题:
在app1
的模板文件中,我可以非常轻松地为app1生成静态文件的网址。但是,如果我希望app2
模板文件为app1
的静态文件生成网址,则链接无效。如何在app2
中生成{% load static %}
<img src="{% static "app1/example.jpg" %}"> <!-- ok -->
<img src="{% static "app2/example.jpg" %}"> <!-- link broken -->
的静态文件?
App1模板文件:
<img src="http://localhost:8000/static/app1/example.jpg">
<img src="http://localhost:8000/static/app2/example.jpg">
HTML输出:
{{1}}
答案 0 :(得分:1)
我找到了解决方案。请注意,项目文件夹中与项目文件夹名称完全相同的目录是不一个应用程序。起初认为它是初始应用程序,由Django自动创建,但它不是。
如果您有两个应用程序,并且想要在它们之间加载静态文件,则上面的代码示例可以正常工作。
答案 1 :(得分:1)
我有同样的问题。我在settings.py
中设置了此变量来处理它STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'app1/static/'),
os.path.join(BASE_DIR, 'app2/static/'),
]
因此,无论您从哪个应用程序调用它,这两个目录都将在静态模板标记中可用。
我正在使用django 2.1。 Obs: 1-也许在使用startapp命令时默认设置了此设置。 Idk。 2-BASE_DIR是settings.py的绝对路径。
答案 2 :(得分:0)
只需将此添加到您的 settings.py(来自 Django 文档)
STATICFILES_DIRS = [
BASE_DIR / "static",
'var/www/static/',
]