开发者

django url patterns with 2 parameters

This is simple and obvious but I can't get it right:

I h开发者_运维百科ave the following view function declared in urls.py

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

originally I was passing a single parameter to the view function v1. I want to modify it to pass 2 parameters. How do I declare the entry in urls.py to take two parameters?


Supposing you want the URL to look like v1/17/18 and obtain the two parameters 17 and 18, you can just declare the pattern as:

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

Make sure v1 accepts two arguments in addition to the request object:

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

The first example in the documentation about the URL dispatcher contains several patterns, the last of which take 2 and 3 parameters.


Somewhere along the line I got in the habit of naming them directly in the regex, although honestly I don't know if it makes a difference.

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

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

Also, it's very Django to end the url with a trailing slash - Django Design Philosophy, FYI


I believe each group in the regex is passed as a parameter (and you can name them if you want):

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

Check out the examples at: https://docs.djangoproject.com/en/dev/topics/http/urls/. You can also name your groups.


in django 2.x and 3.x:

url:

    path("courses/<slug:param1>/<slug:param2>", views.view_funct, name="double_slug")

template:

    <a href="{% url 'double_slug' param1 param2 %}">Click {{param2}}!</a>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜