django url模式有2个参数

afs*_*hin 15 django

这很简单明了但我无法做到:

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

 (r'^v1/(\d+)$', r'custom1.views.v1'),
Run Code Online (Sandbox Code Playgroud)

最初我将一个参数传递给视图函数v1.我想修改它以传递2个参数.如何在urls.py中声明条目以获取两个参数?

And*_*ron 12

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

(r'^v1/(\d+)/(\d+)$', r'custom1.views.v1'),
Run Code Online (Sandbox Code Playgroud)

确保v1除了请求对象之外还接受两个参数:

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

关于URL调度程序文档中第一个示例包含几种模式,其中最后一种采用2和3个参数.


j_s*_*syk 12

在某个地方,我养成了在正则表达式中直接命名它们的习惯,虽然老实说我不知道​​它是否有所作为.

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

#views:
def v1(request, variable_a, variable_b):
    pass
Run Code Online (Sandbox Code Playgroud)

此外,用一个尾随斜线结束网址是非常Django - Django Design Philosophy,FYI


kcb*_*ner 8

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

(r'^v1/(\d+)/(\d+)/$', r'custom1.views.v1')
Run Code Online (Sandbox Code Playgroud)

查看以下示例:https://docs.djangoproject.com/en/dev/topics/http/urls/.您也可以为您的群组命名.


小智 5

在 Django 2.x 和 3.x 中:

网址:

    path("courses/<slug:param1>/<slug:param2>", views.view_funct, name="double_slug")
Run Code Online (Sandbox Code Playgroud)

模板:

    <a href="{% url 'double_slug' param1 param2 %}">Click {{param2}}!</a>
Run Code Online (Sandbox Code Playgroud)