我正在编写一个基本的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等文件时,它会提供文件!
发生了什么事?
答案 0 :(得分:10)
urls.py
中的图案顺序错误。
当您尝试检索路径而没有空格时,它匹配:
(r'^(?P<page_name>\S*)$', 'Blah.content.views.index'),
不是static.serve
,当然你没有这样的页面,但是当你尝试使用空间访问路径时,它匹配正确的static.serve
模式,因为它更通用并允许空格。
要解决这个问题,只需交换这些模式。