【问题标题】:Django view receives GET Request from form that should be sending POSTDjango 视图从应该发送 POST 的表单接收 GET 请求
【发布时间】:2013-08-16 17:14:57
【问题描述】:

我有一个应该处理表单提交的视图。模板中的 HTML 表单应该发送帖子,但视图只接收 GET 请求。

查看:

def eventSell(request, id):
    event = Event.objects.get(pk = id)
    if request.user.is_authenticated():
        print request.user 
        if request.method == ['POST']:
            print 'post'
            form = ListingForm(request.POST)
            if form.is_valid():
                print 'form is valid'
                user = request.user
                price = request.POST['price']
                t = Object(event = event, price = price, seller = user, date_listed = timezone.now())
                t.save()
                return HttpResponseRedirect(reverse('app:index'))
        else:
            print 'get'
            form = ListingForm()
        return render_to_response('app/list.html', {'form' : form, 'event' : event}, context_instance = RequestContext(request))
    else:
        return HttpResponseRedirect(reverse('allauth.accounts.views.login'))

模板:

<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>

我真的很难过,所以任何建议都会非常感激。谢谢。

【问题讨论】:

    标签: django forms post get


    【解决方案1】:

    它可能正在发送POST 但是,您没有正确收听。

    if request.method == ['POST']:
    

    应该是

    if request.method == 'POST':
    

    或者只是

    if request.POST:
    

    还有一件事。

    您可以使用@login_required decorator 而不是手动检查经过身份验证的用户。

    【讨论】:

    • 检查方法优于检查 request.POST 的布尔值 - 后者是内置字典类的子类,对于不提供数据的 POST 请求,将评估为 False。跨度>
    猜你喜欢
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2020-10-28
    • 2019-05-04
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多