【问题标题】:Django Url Dispatcher regexDjango Url Dispatcher 正则表达式
【发布时间】:2013-09-27 16:00:27
【问题描述】:

我希望某些东西不是强制性的,所以基本上我希望 www.site.com/endpoint 自动重定向到 www.site.com/something/endpoint。我有办法在一条线上完成吗?

现在我在做:

url(r'^SOMETHING/endpoint$', 'endpoint', name='endpoint'),
url(r'^endpoint$', RedirectView.as_view(url='SOMETHING/endpoint')),

干杯。

【问题讨论】:

  • url(r'^(SOMETHING/)?endpoint$', 'endpoint', name='endpoint')?我没有做过 django,但值得一试。
  • 你不能只做url(r'^[.*]?endpoint$', 'endpoint', name='endpoint') 吗?
  • 这也是我的猜测,但它抱怨视图只需要 1 个参数,但现在给出 2. (SOMETHING/)?似乎成了争论...

标签: python regex django url


【解决方案1】:

为什么要在一行中执行此操作?你说的是两个不同的 URL,它们做两种不同的事情——一个是做 HTTP 重定向,另一个是呈现视图。两条线是正确的方法。

编写一个更广泛的正则表达式来覆盖两个 URL 将允许您对两个 URL 使用相同的视图,但不会导致重定向(也就是说,它不会将 URL 更改为 SOMETHING/endpoint)。

【讨论】:

  • 是的,我越想越有这种感觉。感谢您的回答。
【解决方案2】:

我相信您要求让任何以“endpoint”结尾的网址重定向。

要完成此操作,请将您的重定向 url 正则表达式更改为 r"endpoint$"。正则表达式中的插入符运算符基本上是从字符串的开头开始的。

此正则表达式将匹配任何以“endpoint”结尾的 url,例如。 foo/endpoint, bar/endpoint

【讨论】:

  • 我明白你在说什么,但我真的希望 URL 中也有一些东西。实际上我觉得它只是一个端点可能是一个问题,因为如果我想要一个像 www.site.com/this/is/sparta/you-and-me-endpoint 这样的网址怎么办
  • @Chris 你的解释很混乱。你想达到什么目的?
猜你喜欢
  • 2011-03-22
  • 2013-07-26
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
相关资源
最近更新 更多