首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将URL的结果作为参数传递?

如何将URL的结果作为参数传递?
EN

Stack Overflow用户
提问于 2016-01-28 15:29:43
回答 1查看 56关注 0票数 0

我希望能够处理以下URL:

代码语言:javascript
复制
http://mywe/en/my-home/travels/search-results/age-min/18/
http://mywe/en/my-home/travels/search-results/age-min/18/age-max/50/
http://mywe/en/my-home/travels/search-results/town/acapulco

依此类推,所以它总是遵循这样的模式

代码语言:javascript
复制
'([whatever until a slash]+/[whatever until a slash]+)+/$'

这意味着在regexp中:

代码语言:javascript
复制
'([^/]+/[^/]+)+/$'

在Django,我正在尝试这样做:

代码语言:javascript
复制
'^my-home/travels/search-results/(?P<slug>[a-zA-Z0-9-_]*)/$'

这个网址工作得很好:

代码语言:javascript
复制
http://mywe/en/my-home/travels/search-results/testtesttest/

当我将[a-zA-Z0-9-_]替换为[.] (应该是“任意字符”)时,它不起作用。我想知道

  • 1-为什么它不起作用
  • 2-做'([^/]+/[^/]+)+/$'的regexp "Django方式“是什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 15:56:38

对于第一个问题,'[.]'不工作,因为它并不意味着任何字符,它意味着点。对于任何字符,您都应该在[]之外使用点。

对于第二个问题:您可以用类似的方式定义URL,但是不能捕获重复组的所有匹配,它只能捕获最后一个。这就是正则表达式的局限性。

但我有两种可能的解决方案:

  1. 将搜索结果后的所有内容捕获到一个捕获组(例如.*)中end模式的末尾,并在您的视图中解析它以提取所有可能的值。
  2. 在URL中定义指向该视图的多个模式。他们甚至可以有相同的名字,例如: url(r'^/en/my-home/travels/search-results/(^/+)/(^/+)/$',your_view,name="your_url_name"),url(r'^/en/my-home/travels/search-results/(^/+)/(^/+)/(^/+)/(^/+)/$',your_view,name="your_url_name"),url(r'^/en/my-home/travels/search-results/(^/+)/(^/+)/(^/+)/(^/+)/(^/+)/(^/+)/$',your_view,name="your_url_name") 你甚至可以用小循环来帮助自己: url(r‘^/en/my-home/search-结果/’,包括([ url('^‘+ '(^/+)/(^/+)/’* (i + 1) + '$',your_view,name="your_url_name"),用于范围(10)#要捕获多少最大参数])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35065540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档