Django - 找不到静态图片

时间:2011-12-12 13:16:09

标签: python django static-files django-staticfiles

Helo all,

我正在开发模式下运行Django应用程序。我已将静态文件收集到项目的/ static / images /目录中。

在我的模板中,我尝试链接示例图片:

<img src="{{ STATIC_URL }}items/no_image.jpeg"/>
    {{ STATIC_URL }}items/no_image.jpeg

(底线是打印用于调试目的)

图片显示链接断开,底行打印出正确的目录:

 /static/items/no_image.jpeg

在我的项目中,我有/static/items/no_image.jpeg文件。

在我的settings.py中,我有:

STATIC_ROOT = os.path.dirname(__file__)+'/static/'
STATIC_URL = '/static/'

有人可以帮忙吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

我认为这是斜线问题。尝试

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')

答案 1 :(得分:2)

发现问题所在。问题是我使用了错误的目录。当STATIC_URL应该是/ static /时,它被命名为/ site_media /。改变它,现在一切都清楚地像水一样......

答案 2 :(得分:1)

也许你误解了静态文件的收集。在开发期间,无需使用collectstatic命令将它们收集到目标目录中。这意味着要为部署完成。

在开发期间,您只需添加django.contrib.staticfiles应用程序,然后按照here所述指定STATIC_ROOT,STATIC_URL和STATICFILES_DIRS。

然后,在您的基本urlconf中,您需要按照here所述添加静态文件的url规则。这就是“开发模式”。

在生产模式下,首先运行collectstatic命令,然后将生成的目录推送到运行apache(或nginx或其他)的服务器,并让他在www.yoururl上提供该目录。 COM /静态/

关于在django中处理静态文件的整个故事几乎让我疯狂......即使在今天,我仍然需要思考几分钟才能记住它或解释它。 : - /如果有时会让你感到困惑,请不要担心。

答案 3 :(得分:0)

我想我最近遇到了类似的问题。尝试将图像直接放在/ static /而不是/ static / items /中。如果您希望能够直接链接到/static/items/sample.jpg,您需要将/ static / items /添加到SETTINGS中的STATIC_ROOT