django在静态文件子文件夹中找不到静态文件

4 投票
2 回答
4729 浏览
提问于 2025-04-18 09:14

django 1.6.5

我的静态文件放在静态文件的一个子文件夹里。

djangoprj
    djangoprj
        settings.py
        urls.py
        wsgi.py
        __init__.py
    static
        myapp
            mystaticfiles
            ...
    apps
        myapp
            ...
            templates
                *.html
            ...

在我的模板文件中,我用完整路径链接静态文件。

<img src="/static/myapp/images/my.png" />

但是这些文件找不到,我收到了404错误。

当我把settings.py改成这样

STATIC='/static/myapp/'

我就能找到这些静态文件了。但我不想这样做。为什么当STATIC='/static/'时不行呢?有没有什么简单的方法解决这个问题,而不是手动执行命令,比如'collectstatic'?我已经把我的静态文件放在static文件夹里,并且在我的模板文件中使用了完整路径。为什么还是不行呢?提前谢谢你。

2 个回答

1

你可以在这些回答中找到一些帮助

  1. 静态文件问题
  2. STATIC_URL 不工作

在我的配置中,我的文件夹结构是这样的,静态文件放在我的应用里

djangoprj
    djangoprj
        settings.py
        urls.py
        wsgi.py
        __init__.py
    apps
        myapp
            ...
            templates
                *.html
            static   
                myapp
                   mystaticfiles
            ...
            ...

在设置里

INSTALLED_APPS = (
    ...
    'django.contrib.staticfiles',
    ...
)

STATIC_URL = '/static/'

在模板中我使用了 'static' 标签

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'posts/style.css' %}" />

希望这些能帮到你

2

现在你把静态文件夹切换到了 '/static/myapp/'

在你的标签中,你应该使用 <img src="/static/images/my.png" />

通常情况下,你应该使用 {% static %} 这个模板标签来做到这一点,像下面这样(假设 STATIC='/static/')。

{% load staticfiles %}

<img src="{% static 'myapp/images/my.png' %}" />

想了解更多,可以查看教程,https://docs.djangoproject.com/en/1.6/intro/tutorial06/

我建议你阅读所有的教程(第1部分到第6部分),在 https://docs.djangoproject.com/en/1.6/

这样你就能对基础知识有更深入的了解。

撰写回答