繁体   English   中英

如何在Django urlparser中解析列表?

[英]How to parse a list in Django urlparser?

在Stack Overflow上,您可以在诸如http://stackoverflow.com/questions/tagged/django+python的URL上查看带有多个标签的问题列表。

我想在我正在从事的项目中做类似的事情,其中​​url参数之一将是标签列表,但是我不确定如何编写可以解析出它的正则表达式urlparser。 我很喜欢SO使用+号的方式,但这不是一个大问题。 我还可以想象urlparser可能必须将整个字符串(foo + bar + baz)作为单个变量提供给视图,这也很好,因为我可以将其拆分为视图本身,也就是说,我不希望URL解析器为视图提供一个已经拆分的列表,但是如果可以的话,那就更好了!

现在我所拥有的是:

url(r'^documents/tag/(?P<tag>\w+)/$', ListDocuments.as_view(), name="list_documents"),

因为\\w+只是给我那些[A-Za-z0-9_]而不是+ ,所以[A-Za-z0-9_]提取一个标签。 我尝试了类似的东西:

url(r'^documents/tag/(?P<tag>[\w+\+*])/$', ListDocuments.as_view(), name="list_documents"),

但这不再匹配documents/tag/foodocuments/tag/foo+bar

请协助,我对regex不太满意,谢谢!

无法自动执行此操作。 文档中 :“每个捕获的参数都将作为纯Python字符串发送到视图,而不考虑正则表达式进行哪种匹配。” 在视图中拆分它是要走的路。

答案中的第二个正则表达式是可以的,但是它确实允许您不需要的某些东西(例如'django+++python+' )。 较严格的版本可能类似于:( (?P<tag>\\w+(?:\\+\\w+)*) 然后,您可以在视图中执行一个简单的tag.split('+') ,而无需担心任何边缘情况。

目前适用:

url(r'^documents/tag/(?P<tag>[A-Za-z0-9_\+]+)/$', ListDocuments.as_view(), name="list_documents"),

但是我希望能够将w返回到那里,而不是像这样的完整字符列表。

[编辑]

开始了:

url(r'^documents/tag/(?P<tag>[\w\+]+)/$', ListDocuments.as_view(), name="list_documents"),

如果Django urlparser有一种方法可以给视图一个实际的列表,而不只是一个大的长字符串,我仍然会选择一个更好的答案,但是,如果不可能,则此解决方案确实可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM