带有2个参数的django url模式

带有2个参数的django url模式,django,Django,这很简单也很明显,但我无法正确理解: 我在urls.py中声明了以下视图函数 (r'^v1/(\d+)$', r'custom1.views.v1'), 最初,我将一个参数传递给视图函数v1。 我想修改它以传递2个参数。如何在URL.py中声明条目以获取两个参数?假设您希望URL看起来像v1/17/18,并获得两个参数17和18,您可以将模式声明为: (r'^v1/(\d+)/(\d+)$', r'custom1.views.v1'), 确保除请求对象外,v1还接受两个参数: def v1

这很简单也很明显,但我无法正确理解:

我在urls.py中声明了以下视图函数

 (r'^v1/(\d+)$', r'custom1.views.v1'),
最初,我将一个参数传递给视图函数v1。
我想修改它以传递2个参数。如何在URL.py中声明条目以获取两个参数?

假设您希望URL看起来像
v1/17/18
,并获得两个参数
17
18
,您可以将模式声明为:

(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

中的包含多个模式,最后一个模式采用2个和3个参数。

我相信正则表达式中的每个组都是作为参数传递的(如果需要,可以命名它们):


查看以下示例:。你也可以给你的组命名。

我习惯于在正则表达式中直接给它们命名,不过老实说,我不知道这是否有区别

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

#views:
def v1(request, variable_a, variable_b):
    pass
#URL:
(r“^v1/(?P(\d+))/(?P(\d+))/$”,r“custom1.views.v1”)
#观点:
def v1(请求、变量a、变量b):
通过
另外,在Django 2.x和3.x中,在url末尾加一个斜杠-,以供参考,这也是非常重要的:

网址:

路径(“courses/”,views.view\u funct,name=“double\u slug”) 模板:



这两个参数是否必须用斜线分隔?你能要一些像:
http://example.com/courses?start=01-2012年1月&end=2012年1月31日
。虽然我不知道URLconf会是什么样子。@moonraker是的,你可以这样做,但我想使用斜杠是一种惯例
#urls:
(r'^v1/(?P<variable_a>(\d+))/(?P<variable_b>(\d+))/$', r'custom1.views.v1')

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