Django URL pattern (~~/?item_id=2)

2019-09-25 22:01发布

问题:

https://xxxx/category_check_view/?item_id=2

Above is a sample of URL pattern. How should i configured my URL in order to enable it to redirect to the right view? I seem to get it working for a url like this https://xxxx/category_check_view/2/ only so far.

回答1:

You can pass parameters to a view either in the url:

/category_check_view/2

Or via GET params:

/category_check_view/?item_id=2

GET params are not processed by the URL handler, but rather passed directly to the GET param dict accessible in a view at request.GET.

The Django (i.e. preferred) way to do handle URLs is the first one. So you would have a URL conf:

(r'^category_check_view/(\d{4})$', 'proj.app.your_view'),

And a matching view:

def your_view(request, id):
    obj = Obj.objects.get(id=id)
    # ...

However, if you insist on passing the param via GET you would just do:

(r'^category_check_view$', 'proj.app.your_view'),

And:

def your_view(request):
    id = request.GET.get('item_id')
    obj = Obj.objects.get(id=id)
    # ...


回答2:

You can't use get parameters in URL pattern. Use them in your view:

item_id = request.GET.get('item_id')


标签: django url