Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django URL配置-匹配文件名_Python_Django - Fatal编程技术网

Python Django URL配置-匹配文件名

Python Django URL配置-匹配文件名,python,django,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\u url\u patterns=p

使用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\u url\u patterns=patterns(“”,
url(r'^uploads/view/(?P\w{0256})/$),ShowImageView.as_view(),name='show'),
)
但是它与
/uploads/view/testfile.png
不匹配


由于我仍在努力理解python正则表达式的“如何匹配”,因此我最终得到了一个包含文件名及其扩展名的字符串,或者更好的是,它的文件名和扩展名分别是?

\w
不匹配
,因此扩展名不匹配。将
点添加到角色类中。您还需要删除尾随斜杠:

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

点表示“任何字符”。也许使用[\w\.]{0256}更好?@sergzach:不在字符类中,它不会。在
[…]
中,它只是一个点。@MartijnPieters谢谢,它起作用了。。您建议如何分别获取文件名和扩展名,如file_name=>“test_filename”,extension=>“png”?@Daniel:在末尾添加一个单独的扩展模式,或者在视图中使用
os.path.splitext()
来提取扩展名。
>>> 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'}