Django UserCreationForm既不给出错误消息也不注册我们

2024-06-30 16:22:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是pythondjango的初学者。并尝试在教程的帮助下建立一个发布文章的网站。我被困在用户创建表单上了。我已经使用UserCreationForm创建了一个表单,但是当我提交表单时,我既不能提交表单,也不能在页面上得到任何错误消息。在

我的视图.py代码

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

 def register_user(request):
     if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
           form.save()
           return HttpResponseRedirect('/accounts/register_success')

    args = {}
    args.update(csrf(request))

    args['form'] = UserCreationForm()
    print args
    return render_to_response('register.html', args)


 def register_success(request):
    return render_to_response('register_success.html')

注册.html

^{pr2}$

注册_成功.html

  {% extends "base.hml" %}

  {% block content %}

   <h2>You have registered!</h2>
   <p>Click <a href="/accounts/login/">Here</a> to login again</p>

 {% endblock %}

Tags: todjangofromimportformauthregister表单
2条回答

问题是你总是在创建一个空白表单。在

args['form'] = UserCreationForm()

这意味着当表单无效时,POST请求不会出现任何错误。在

相反,您只应该为GET请求创建空白表单。在

^{pr2}$

注意,我通过使用render而不是过时的render_to_response简化了视图。这意味着你不需要手动处理csrf。在

你可以使用Django Generic Views,特别是CreateView,它会让你的生活更轻松。你可以这样使用它:

from django.views.generic import CreateView

class CreateUserView(CreateView):
    template_name = 'register.html'
    form_class = UserCreationForm
    success_url = '/accounts/register_success'

将此添加到您的urls.py中,您就可以开始:

^{pr2}$

相关问题 更多 >