注册HttpResponseError的ModelForm

时间:2013-08-16 15:02:17

标签: python django httpresponse django-forms

首先,我知道错误意味着什么,我只是对配置感到困惑。

我收到错误:

views.Registration didn't return an HttpResponse object

问题是当我访问localhost/Register时,我收到了上述错误。

问:如果我希望localhost/RegisterRegistrationForm() register.html内加载render()模板时显示表单(在底部)访问/Register时我怎么做?我是否需要创建另一个我目前指定的/NewUser视图?我的想法是render()会在查看template

时执行以显示/Register(包含其中的表单)

代码: 视图

def Registration(request):
    RegForm = RegistrationForm(request.POST or None)
    if request.method == 'POST':
        if RegForm.is_valid():
            clearUserName = RegForm.cleaned_data['userNm']   
            clearPass = RegForm.cleaned_data['userPass']
            RegForm.save()
            try:
                return HttpResponseRedirect('/NewUser/?user=' + clearUserName)
            except:
                raise ValidationError('Invalid Request', code='300') ## [ TODO ]: add a custom error page here.
    else:
        RegForm = RegistrationForm()

        return render(request, 'VA/reuse/register.html', {
            'form': RegForm 
        })

2 个答案:

答案 0 :(得分:1)

如果请求是'GET'而不是'POST',你需要渲染一些东西:ie。

def Registration(request):
    RegForm = RegistrationForm(request.POST or None)
    if request.method == 'POST':
        if RegForm.is_valid():
            clearUserName = RegForm.cleaned_data['userNm']   
            clearPass = RegForm.cleaned_data['userPass']
            RegForm.save()
            try:
                return HttpResponseRedirect('/NewUser/?user=' + clearUserName)
            except:
                raise ValidationError('Invalid Request', code='300') ## [ TODO ]: add a custom error page here.
        else:
            RegForm = RegistrationForm()

        return render(request, 'VA/reuse/register.html', {
            'form': RegForm 
        })
    else:
        RegForm=RegistrationForm()
        return render(request, 'template.html', {'formset': RegForm})

当然,您应该更改模板的上下文,具体取决于您需要呈现的内容。

答案 1 :(得分:0)

不,您应该将else之后的所有内容移回一个缩进级别。否则,如果请求不是POST,则不会返回任何内容。