Django请求获取参数


84

在Django请求中,我具有以下内容:

POST:<QueryDict: {u'section': [u'39'], u'MAINS': [u'137']}>

我如何获得的价值sectionMAINS

if request.method == 'GET':
    qd = request.GET
elif request.method == 'POST':
    qd = request.POST

section_id = qd.__getitem__('section') or getlist....

7
切勿直接调用魔术方法之一。始终使用适当的帮助器功能。
伊格纳西奥·巴斯克斯

k有什么方法可以解码段
绿巨人

1
阅读有关这些对象的django文档:docs.djangoproject.com/en/dev/ref/request-response/…。与python中的dict相比,存在一些差异。
滑雪

Answers:


90

您可以像[]QueryDict任何普通字典中一样从对象中提取值。

# HTTP POST variables
request.POST['section'] # => [39]
request.POST['MAINS'] # => [137]

# HTTP GET variables
request.GET['section'] # => [39]
request.GET['MAINS'] # => [137]

# HTTP POST and HTTP GET variables (Deprecated since Django 1.7)
request.REQUEST['section'] # => [39]
request.REQUEST['MAINS'] # => [137]

9
这些年来只是一个提示:request.REQUEST同时已被弃用
阿罗纳达瓦尔语,2015年

189

您还可以使用:

request.POST.get('section','') # => [39]
request.POST.get('MAINS','') # => [137] 
request.GET.get('section','') # => [39]
request.GET.get('MAINS','') # => [137]

使用此功能可确保您不会出错。如果未定义具有任何键的POST / GET数据,则不引发异常,而是回退值(将使用.get()的第二个参数)。


1
绝对是最可靠的方法!
d-coder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.