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



在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/',
]

相关内容

  • 没有找到相关文章

最新更新