在堆栈溢出时,您可以在一个URL(如http://stackoverflow.com/questions/tagged/django+python
)处查看带有多个标记的问题列表。你知道吗
我想在我正在工作的一个项目中做一些类似的事情,其中一个url参数将是一个标记列表,但我不知道如何编写一个regexurlparser来解析它。我喜欢SO使用+
符号的方式,但它不是一个dealbreaker。我还设想urlparser可能必须将整个字符串(foo+bar+baz)作为单个变量来提供给视图,这也很好,因为我可以在视图本身中拆分它—也就是说,我不希望URL解析器给视图一个已经拆分的列表,但如果可以,那就更好了!你知道吗
现在我只有:
url(r'^documents/tag/(?P<tag>\w+)/$', ListDocuments.as_view(), name="list_documents"),
因为\w+
只给我那些[A-Za-z0-9_]
,而不是+
,所以它只提取了一个标签。我试过这样的方法:
url(r'^documents/tag/(?P<tag>[\w+\+*])/$', ListDocuments.as_view(), name="list_documents"),
但这不再匹配documents/tag/foo
或documents/tag/foo+bar
。你知道吗
请帮忙,我不太喜欢正则表达式,谢谢!你知道吗
目前有效:
但是我希望能够把
w
放回去,而不是像那样的完整字符列表。你知道吗[编辑]
我们开始吧:
如果Django urlparser有办法为视图提供一个实际的列表而不是一个大的长字符串,我仍然会选择一个更好的答案,但是如果这不可能,这个解决方案确实有效。你知道吗
这不可能自动完成。从documentation:“每个捕获的参数都作为一个普通的Python字符串发送到视图,而不管正则表达式进行何种匹配。”。你知道吗
答案中的第二个regex是可以的,但是它确实允许一些您可能不想要的东西(例如
'django+++python+'
)。更严格的版本可能是:(?P<tag>\w+(?:\+\w+)*)
。然后您可以在视图中执行一个简单的tag.split('+')
,而不必担心任何边缘情况。你知道吗相关问题 更多 >
编程相关推荐