【问题标题】:django method POST and Querydictdjango 方法 POST 和 Querydict
【发布时间】:2016-02-05 13:57:17
【问题描述】:

在我的模板choose_values.html 中,我有一个下拉列表,我选择了一些值。通过将 request.POST 分配给变量,我可以将这些值作为 QueryDict 传递给视图 tomatos

我想在视图 tomatos 中的过滤器中使用选择的值

我不知道如何从这个 QueryDict 中提取选定的值。

这是 QueryDict 示例:

<QueryDict: {u'csrfmiddlewaretoken': [u'pFs9fj5MLQML7KLYHXFeCWTSvuMFEoML'], u'dropdown1': [u'project1'], u'dropdown2': [u'S1'], u'dropdown3': [u'S1.2']}>

我该怎么做?

choose_values.html

CHOOSE_VALUES
<form method="post" action="{% url 'projects:manage_values' %}">{% csrf_token %}

    <select name="dropdown1">
        <option value="project1">project1</option>
        <option value="project1">project2</option>
    </select>

    <select name="dropdown2">
        <option value="S1">S1</option>
        <option value="S2">S2</option>
        <option value="all">all</option>
    </select>

     <select name="dropdown3">
         <option value="S1.1">S1.1</option>
         <option value="S1.2">S1.2</option>
         <option value="all">all</option>
    </select>

    <input type="submit" value="submit" />
</form>

番茄视图

def tomatos(request):
    context = RequestContext(request)
    ZoneSubFormSet = modelformset_factory(ZoneSubStage, fields=('zone', 'substage','value'),max_num=2)
    dupa=request.POST
    print dupa
    if request.method == 'POST':
        formset = ZoneSubFormSet(queryset=ZoneSubStage.objects.filter(substage__stage__stage_name='S1',
                                                                      substage__stage__project__name='project1',
                                                                      zone__zone_name='z1'))
    else:
        formset = ZoneSubFormSet(queryset=ZoneSubStage.objects.filter(substage__stage__stage_name='S2',
                                                                      substage__stage__project__name='project1',
                                                                      zone__zone_name='z2'))

    return render_to_response('autostages/update_values.html', {'formset': formset}, context)

编辑

由于某些原因我不更新值,我不知道为什么。

def tomatos(request):
    context = RequestContext(request)
    ZoneSubFormSet = modelformset_factory(ZoneSubStage, fields=('zone', 'substage','value'),max_num=2)
    value1=str(request.POST.get('dropdown1'))
    value2=str(request.POST.get('dropdown2'))
    value3=str(request.POST.get('dropdown3'))
    if request.method == 'POST':
        formset = ZoneSubFormSet(queryset=ZoneSubStage.objects.filter(substage__stage__project__name=value1,
                                                                      substage__stage__stage_name=value2,
                                                                      zone__zone_name=value3))
        if formset.is_valid():
            formset.save(commit=True)
    else:
        formset = ZoneSubFormSet(queryset=ZoneSubStage.objects.filter(substage__stage__project__name=value1,
                                                                      substage__stage__stage_name=value2,
                                                                      zone__zone_name=value3))

    return render_to_response('autostages/update_values.html', {'formset': formset}, context)

【问题讨论】:

    标签: django forms post


    【解决方案1】:

    您可以将此 QueryDict 用作​​普通字典,在这种情况下,例如,如果您想获取 dropdown1 值:

    request.POST.get('dropdown1')
    

    【讨论】:

    • 嗨,由于某些原因,我没有更新我的日期。你能帮忙吗?我已经更新了上面帖子中的代码,我可以看到我没有执行 formset.save()
    猜你喜欢
    • 2016-07-19
    • 2011-02-04
    • 2012-08-14
    • 1970-01-01
    • 2010-10-11
    • 2020-05-26
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多