带有2个参数的django url模式
这很简单也很明显,但我无法正确理解: 我在urls.py中声明了以下视图函数带有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
(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