我有一个应该处理表单提交的 View 。模板中的 HTML 表单应该发送一个帖子,但是 View 只收到一个 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>
我真的很难过,所以任何建议都将不胜感激。谢谢。
最佳答案
它可能正在发送 POST
但是,您没有正确聆听。
if request.method == ['POST']:
应该
if request.method == 'POST':
要不就
if request.POST:
还有一件事。
您可以使用
@login_required
decorator而不是手动检查经过身份验证的用户。
关于Django View 从应该发送 POST 的表单接收 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237037/