Django URL配置 - 匹配文件名

时间:2013-07-02 07:36:04

标签: python django

使用Django 1.5.1我正在尝试匹配:

/uploads/view/FILE_NAME.ext  eg: /uploads/view/testfile.png

目前:

uploads_url_patterns = patterns('',
    url(r'^uploads/view/(?P<file_name>\w{0,256})/$', ShowImageView.as_view(), name='show'),
)

但是它与/uploads/view/testfile.png不匹配。

因为我仍然在努力理解python正则表达式,我怎么能匹配所以我最终得到一个字符串,包括文件名及其扩展名,甚至更好,它的文件名和扩展名分别?

1 个答案:

答案 0 :(得分:9)

\w.不匹配,因此.png扩展名未匹配。将.点添加到角色类中。您也想删除尾部斜杠:

uploads_url_patterns = patterns('',
    url(r'^uploads/view/(?P<file_name>[\w.]{0,256})$', ShowImageView.as_view(), name='show'),
)

现在这将匹配文字文本uploads/view/,后跟0到256个字母,数字,下划线和点。

快速演示:

>>> import re
>>> re.search(r'^uploads/view/(?P<file_name>[\w.]{0,256})$', 'uploads/view/test_filename.png')
<_sre.SRE_Match object at 0x103aa5828>
>>> re.search(r'^uploads/view/(?P<file_name>[\w.]{0,256})$', 'uploads/view/test_filename.png').groupdict()
{'file_name': 'test_filename.png'}