【问题标题】:The view didn't return an HttpResponse object视图没有返回 HttpResponse 对象
【发布时间】:2013-06-11 03:55:45
【问题描述】:

我正在学习一个尝试创建注册表单的教程。即使记录它的人能够创建我没有的表单,是否有人在我的代码中看到任何错误?该视图未返回 HttpResponse 对象。

from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.contrib import auth
from django.core.context_processors import csrf
from django.contrib.auth.forms import UserCreationForm

def registerit(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect('/accounts/register_success')
        args = {'form3':UserCreationForm()}
        args.update(csrf(request))
        return render_to_response('register.html', args)

感谢您的帮助。

【问题讨论】:

  • 请提供您遇到的错误的完整跟踪。这将有助于追踪错误的原因。只是为了它 url“/accounts/register_success”是否存在并匹配视图??

标签: django forms views registration


【解决方案1】:

只有在if request.method == 'POST': 时,您才返回HttpResponse 对象

但如果请求方法是 __not POST,则您不会返回任何内容。您可能需要将代码向左缩进一级。

def registerit(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect('/accounts/register_success')
    args = {'form3':UserCreationForm()}
    args.update(csrf(request))
    return render_to_response('register.html', args)

【讨论】:

  • 我认为错误不在那里。他一定是发了一个post请求。
  • 我不这么认为。第一次访问该 url 时,它将是一个 GET 请求。不是 POST。
  • 是的,他正在发送,但是当他第一次访问该页面时,他使用 GET 而不是 POST。这就是为什么这个答案是正确的。
猜你喜欢
  • 2022-11-25
  • 2011-03-06
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多