2011-07-05 45 views
12

这是浅显的,但我不能得到正确的Django的URL模式:有两个参数

我在urls.py宣布以下视图功能

(r'^v1/(\d+)$', r'custom1.views.v1'), 

原来我经过一单个参数到视图函数v1。 我想修改它来传递2个参数。如何在urls.py中声明条目以获取两个参数?

回答

11

假设你想要的网址看起来像v1/17/18,并获得两个参数1718,你可以声明模式为:

(r'^v1/(\d+)/(\d+)$', r'custom1.views.v1'), 

确保v1接受,除了要求对象有两个参数:

def v1 (request, a, b): 
    # for URL 'v1/17/18', a == '17' and b == '18'. 
    pass 

documentation about the URL dispatcherfirst example包含几个模式,其中最后的取2点3的参数。

9

沿线的某处我习惯于直接在正则表达式中命名它们,尽管老实说我不知道​​它是否有所作为。

#urls: 
(r'^v1/(?P<variable_a>(\d+))/(?P<variable_b>(\d+))/$', r'custom1.views.v1') 

#views: 
def v1(request, variable_a, variable_b): 
    pass 

此外,它是非常的Django以斜线结束URL - Django Design Philosophy,仅供参考