从坏网址模式中找不到Django 1.3.1中的页面(404)

时间:2011-12-13 11:16:10

标签: django url http-status-code-404

我跟随this Django blog tutorial并且无法获得教程中给出的url模式以正常工作。作者提供的url.py代码是

(r'^static/(?P
.*)$', 'django.views.static.serve',
    {'document_root': 'c:/static/adornment'}),)

我将它改编为我的Linux设置

from django.conf.urls.defaults import patterns, include, url

urlpatterns = patterns('',
        (r'^static/(.*)$', 'django.views.static.serve',
            {'document_root': '/home/sez/blog/static/image.png'}
        ),
)  

并且在转到http://127.0.0.1:8000/static/image.png后收到以下错误

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/static/image.png
'image.png' could not be found

我该如何使用?

2 个答案:

答案 0 :(得分:0)

将'document_root'更改为目录,并确保将STATIC_URL设置设置为/ static /

答案 1 :(得分:0)

您遇到的行为的可能原因如下。您可能在“settings.py”文件中的INSTALLED_APS中包含“django.contrib.staticfiles”。在这种情况下,当您运行“manage.py runserver”(并且“settings.py”中有DEBUG = True)时,静态文件将由staticfiles应用程序自动从您的STATIC_URL提供,而不是由您的'django.views提供.static.serve'网址格式。但是,在您的情况下,staticfiles应用程序设置不正确,并且找不到您的'image.png'文件。您可能希望在此处阅读有关传统静态文件服务的更多信息:Managing static files

就此而言,STATIC_URL不应该像现在这样是一个文件系统路径:STATIC_URL。 当你这样做时,你有效地禁用了staticfiles应用程序,你的代码开始工作:)

因此,要“正确”解决您的问题,您需要确保STATIC_URL和“urls.py”中的URL路径不同,例如,将其中一个设为“/ static /”,另一个“/ media /”(或其他东西),或者如果你不使用它,只需从你的INSTALLED_APPS中删除“django.contrib.staticfiles”。 (当然,关于使'document_root'成为目录的建议是完全正确的。你可以在这里阅读更多关于使用'django.views.static.serve'的信息:Serving static files in development。)