Django请求获取参数

108

在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....

11
永远不要直接调用其中的魔术方法,应该始终使用相应的辅助函数。 - Ignacio Vazquez-Abrams
k 有没有办法解码部分内容? - Hulk
1
阅读Django文档中关于这些对象的内容:http://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects。与Python中的字典相比,有一些不同之处。 - Ski
2个回答

224

您也可以使用:

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

使用这个函数可以确保你不会出现错误。如果POST/GET请求中的某个键未定义,则会使用回退值(.get()方法的第二个参数)代替引发异常。


非常感谢,这比try...except好多了。 - Alexander P

113

您可以使用[]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]

12
多年过去了,我有一个提示:request.REQUEST现已弃用。请注意。 - aronadaal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接