【问题标题】:How do I extend my Django Default UserCreationForm?如何扩展我的 Django 默认 UserCreationForm?
【发布时间】:2020-06-18 14:30:20
【问题描述】:

这是我的“forms.py”

class CreateUser(UserCreationForm):

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

这是我的“views.py”

def register(request):
    form = CreateUser()

    if request.method == 'POST':
        form = CreateUser(request.POST)
        if form.is_valid():
            form.save()

            # messages.sucess(request, 'Acccount created!')

            return redirect('login')

    context = {'form':form}
    return render(request, 'register.html', context)

到目前为止,这是我的基本 register.html。

<h3>Register</h3>

<form method="POST" action="">
    {% csrf_token %}
    {{form.as_p}}

    <input type="submit" name="Create User">

    <a href="/login">I already have a user!</a>

    {{form.errors}}


</form>

问题是,我需要在注册中添加很多东西。默认用户/密码登录是理想的,但注册需要有其他字段,例如地址和信用卡号。如何正确扩展此注册,以使登录名仍然相同?

【问题讨论】:

    标签: python-3.x django django-models django-forms django-views


    【解决方案1】:

    我不知道这是否是最好的方法或类似的方法,所以我不确定是否使用 Usercreationform,但我在这样的项目中使用了它。我在我的models.py中创建了一个用户模型,然后我在forms.py中的元类之前定义了我需要的registerform字段

    class RegisterForm(forms.ModelForm):
        username = forms.CharField(max_length=30)
        first_name = forms.CharField(max_length=30)
        last_name = forms.CharField(max_length=30)
        email = forms.EmailField(max_length=254)
        password = forms.CharField(widget=forms.PasswordInput)
    
        class Meta:
            model = User
            fields = ['username', 'first_name', 'last_name', 'email', 'password']
    
    

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 1970-01-01
      • 2018-04-08
      • 2013-04-18
      • 2020-06-29
      • 2018-07-23
      • 2021-01-05
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多