【问题标题】:Data from the form is not inserted in to user table表单中的数据未插入到用户表中
【发布时间】:2013-11-11 06:12:41
【问题描述】:

我正在尝试从基类 UserCreationForm 创建注册表单,在 django 中添加电子邮件字段。代码如下

form.py

class ussignup(UserCreationForm):

  email=forms.EmailField()

  class Meta:
    model=User
    fields=('username','email','password1','password2')

  def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.email=(self.cleaned_data["email"])
        if commit:
            user.save()
        return user

view.py

def signup(request):
    if request.method=='POST':
        form=ussignup(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/rgsuc')

    args={}
    args.update(csrf(request))
    args['form']=ussignup()
    return render_to_response('register.html',args)

urls.py

 url(r'^accounts/signup',signup),

错误 输出显示电子邮件字段。但是它既没有验证必填字段,也没有将电子邮件字段数据插入到用户数据库表中 我试过这个视频教程here

【问题讨论】:

    标签: python django


    【解决方案1】:

    在你看来,你正在做

    form=signup(request.POST)
    

    应该是

    form=ussignup(request.POST) 
    

    即使用表单类名来实例化表单。

    此外,如果表单错误无效,最好显示表单错误,您可以通过更新代码来做到这一点

    def signup(request):
        if request.method=='POST':
            form=ussignup(request.POST)
            if form.is_valid():
                form.save()
                return HttpResponseRedirect('/accounts/rgsuc')
        else:
            form=ussignup()
        args={}
        args.update(csrf(request))
        args['form']=form
        return render_to_response('register.html',args)
    

    【讨论】:

    • 是的,用户电子邮件反映在用户数据库中。但是我有电子邮件字段为 required =True 但当我将电子邮件留空时它不会提示“此字段是必需的”但它会重定向到具有空字段的同一页面
    • @LaxmiKadariya,您是否按照我所说的更新了代码以显示错误?如果是这样,请使用新代码更新问题。
    • @Roshan 是的,我已经更新了代码。当我输入两个不匹配的密码时,它不会提示密码不匹配。但重定向到初始空白表单。它不会自动处理验证和错误?
    • 是的,是的,我明白了。谢谢。我使用了上面给出的代码,它显示了错误消息。非常感谢
    猜你喜欢
    • 2019-11-29
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2019-05-18
    相关资源
    最近更新 更多