Django请求获取参数

时间:2010-11-12 07:55:12

标签: python django django-models django-views

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

3 个答案:

答案 0 :(得分:165)

您也可以使用:

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

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

答案 1 :(得分:70)

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

答案 2 :(得分:0)

这些查询当前以两种方式完成。如果要访问查询参数(GET),可以查询以下内容:

http://myserver:port/resource/?status=1
request.query_params.get('status', None) => 1

如果要访问POST传递的参数,则需要使用以下方式进行访问:

request.data.get('role', None)

使用“ get()”访问字典(QueryDict),可以设置默认值。在上述情况下,如果未告知'状态'或'角色',则值为None。