Django - 从另一个应用程序加载静态文件
Django - Load static files from another app
在 app1 中,我试图从 app2 加载静态文件。我在项目 settings.py
中没有设置 STATICFILES_FINDERS
,这意味着,当它在应用程序目录中找到静态子目录时,Django will use default 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 -->
HTML 输出:
<img src="http://localhost:8000/static/app1/example.jpg">
<img src="http://localhost:8000/static/app2/example.jpg">
我找到了解决办法。请注意,项目文件夹中与项目文件夹同名的目录 不是 应用程序。一开始以为是Django自动创建的初始app,其实不是。
如果您有两个应用程序,并且您想要在它们之间加载静态文件,上面的代码示例可以工作。
我遇到了同样的问题。我在 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.
的绝对路径
只需将其添加到您的 settings.py(来自 Django 文档)
STATICFILES_DIRS = [
BASE_DIR / "static",
'var/www/static/',
]
在 app1 中,我试图从 app2 加载静态文件。我在项目 settings.py
中没有设置 STATICFILES_FINDERS
,这意味着,当它在应用程序目录中找到静态子目录时,Django will use default 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 -->
HTML 输出:
<img src="http://localhost:8000/static/app1/example.jpg">
<img src="http://localhost:8000/static/app2/example.jpg">
我找到了解决办法。请注意,项目文件夹中与项目文件夹同名的目录 不是 应用程序。一开始以为是Django自动创建的初始app,其实不是。
如果您有两个应用程序,并且您想要在它们之间加载静态文件,上面的代码示例可以工作。
我遇到了同样的问题。我在 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.
的绝对路径只需将其添加到您的 settings.py(来自 Django 文档)
STATICFILES_DIRS = [
BASE_DIR / "static",
'var/www/static/',
]