Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义django用户注册_Django - Fatal编程技术网

自定义django用户注册

自定义django用户注册,django,Django,我正在做一个用户注册功能,这是视图 from django.http import HttpResponseGone from .forms import RegisterForms from django.shortcuts import render def register(request): if request.method == 'POST': user_forms = RegisterForms(request.POST)

我正在做一个用户注册功能,这是视图

from django.http import HttpResponseGone    
from .forms import RegisterForms   
from django.shortcuts import render    
def register(request):
    if request.method == 'POST':
        user_forms = RegisterForms(request.POST)
        if user_forms.is_valid():
            new_userform = user_forms.save(commit=False)
            new_userform.set_password(user_forms.cleaned_data['password'])
            new_userform.save()
            return HttpResponseGone('注册成功')
        else:
            return HttpResponseGone('注册失败')
    else:
        user_forms = RegisterForms()
        return render(request,'account/register.html',{'form':user_forms})
这是表格

from django import forms    
from django.contrib.auth.models import User    
class RegisterForms(forms.ModelForm):
    password = forms.CharField(label='Password',widget=forms.PasswordInput)
    password2 = forms.CharField(label='password again',widget=forms.PasswordInput)
    class Meta:
        model = User
        fields = ('username','email')
    def clean_password2(self):
        cd = self.cleaned_data
        if cd['password'] != cd['password2']:
            raise forms.ValidationError('密码输入不一致,请从新输入')
        else:
            return cd['password']
这是html

<p>欢迎注册</p>
<form action="." method="post">
    {% csrf_token %}
    <p>username {{ form.username }}</p>
    <p>email {{ form.email }}</p>
    <p>password {{ form.password }}</p>
    <p>password again {{ form.password2 }}</p>
    <input type="submit" value="register">
</form>
欢迎注册

{%csrf_令牌%} 用户名{{form.username}

电子邮件{{form.email}

密码{form.password}

再次输入密码{form.password2}

我发现,如果我将视图文件中clean_password2方法的名称更改为clean_password,则无法获取表单中password2的值

这是错误的消息[在此处输入图像描述][4]

我的英语不是很好,我希望有人能帮我谢谢

from django import forms

from django.contrib.auth.models import User

class RegisterForms(forms.ModelForm):
    password = forms.CharField(label='Password',widget=forms.PasswordInput)
    password2 = forms.CharField(label='password again',widget=forms.PasswordInput)
    class Meta:
        model = User
        fields = ('username','email','password','password2')
    def clean(self):
        cd = self.cleaned_data
        if cd['password'] != cd['password2']:
            raise forms.ValidationError('密码输入不一致,请从新输入')
        else:
            return cd

简而言之,在这种情况下,请使用clean方法。

不要将代码作为图像发布。将代码作为文本包含在问题正文中。可能您忘记将字段添加到元组字段=('username'、'email'、'password'、'password2')中了。非常感谢您的帮助