2011-12-12 47 views
0

全部删除,Django - 静态图片未找到

我在开发模式下运行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/' 

有人能帮忙吗?

谢谢!

回答

2

发现问题。问题是我使用了错误的目录。当它应该是/ static /时,STATIC_URL被命名为/ site_media /。改变它,现在一切工作清晰如水...

3

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

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

似乎并不是那样的。试图做出这种改变,但我仍然得到同样的错误。 –

+0

@VascoPatricio等待,如果你已经将你的文件收集到'/ static/images /'URL中的'images'的位置? – DrTyrsa

+0

那么,我认为它是在/静态/图像/,正确?我收集了媒体,并在我的项目中创建了文件夹/ static/images /。 –

1

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

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

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

在生产模式下,您首先运行collectstatic命令,然后将生成的目录移动到运行apache(或nginx或其他)的服务器上,并让他为该目录服务uny www.yoururl.com/static/

关于在django中处理静态文件的全部故事几乎让我疯狂......甚至今天,当我尝试记住它或解释它的时候,我还得思考几分钟。 : - /如果有时让你困惑,别担心。

+0

感谢您的澄清。然而,这里的问题是当我访问URL时图片不可访问,它应该是(在开发模板时提供静态文件)。 –

0

我想我最近有一个类似的问题。尝试将图像直接放在/ static /而不是/ static/items /中。如果您想直接链接到/static/items/sample.jpg,您需要在设置中添加/ static/items /到您的STATIC_ROOT