忽略网址中的参数

时间:2016-05-25 15:09:10

标签: django

我需要将一个特定于城市的快速内容固定到我正在构建的网站上。我打算这样做 - http://example.com/XX/normal-slug。我在urls.py中设置的是:

url(r'^(?P<city>[a-zA-Z]{2})/', include('homepage.urls', namespace='homepage')),
url(r'^(?P<city>[a-zA-Z]{2})/section/', include('section.urls', namespace='section')),

# etc

我现在遇到的问题是突然间我的方法现在都在期待一个“city = XX”的参数。我计划在中间件中处理实际的城市业务逻辑。我的问题是......无论如何都有django“忽略”命名的param?我现在不想修改我的所有观点来采取** kwards或'city'param。如果我对城市代码进行硬编码,那就符合我的期望:

url(r'^XX/section/', include('section.urls', namespace='section')),

我可以复制那种行为,但动态吗?

(另外,我计划进一步发展更强大的东西,可能是Django Sites)

2 个答案:

答案 0 :(得分:1)

您可以使用非捕获正则表达式接受参数,但不将其传递给视图。

r'^[a-zA-Z]{2}/section'

答案 1 :(得分:0)

使用?

在正则表达式中将参数设置为可选
url(r'^((?P<city>[a-zA-Z]{2})/)?section/', include('section.urls', namespace='section')),

如果未在网址中发送城市,您的视图将会收到city=None