为什么Django只提供包含空格的文件?

时间:2009-02-03 19:45:25

标签: python django

我正在编写一个基本的Django应用程序。出于测试/开发目的,我正在尝试使用Django的开发服务器按照http://docs.djangoproject.com/en/dev/howto/static-files/#howto-static-files提供网站的静态内容。

我的urls.py包含:

    (r'^admin/(.*)', admin.site.root),

    (r'^(?P<page_name>\S*)$', 'Blah.content.views.index'),

    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': 'C:/Users/My User/workspace/Blah/media',
         'show_indexes': True})

然而,当我尝试访问诸如http://localhost:8000/static/images/Logo.jpg之类的文件时,Django给了我一个404错误,声称“没有页面与给定的查询匹配。”

当我尝试访问http://localhost:8000/static/images/Blah%20Logo.jpg等文件时,它会提供文件!

发生了什么事?

1 个答案:

答案 0 :(得分:10)

urls.py中的图案顺序错误。

当您尝试检索路径而没有空格时,它匹配:

(r'^(?P<page_name>\S*)$', 'Blah.content.views.index'),

不是static.serve,当然你没有这样的页面,但是当你尝试使用空间访问路径时,它匹配正确的static.serve模式,因为它更通用并允许空格。

要解决这个问题,只需交换这些模式。