自定义用户和表单实现

2024-04-25 13:51:19 发布

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

我在使用django注册redux时遇到问题。你知道吗

我想向用户添加其他字段,如生日、电话等,但很难在模型中扩展用户类。将这些字段添加到我的用户并在表单注册和登录中显示的最佳表单是什么?你知道吗


Tags: django用户模型表单redux电话
1条回答
网友
1楼 · 发布于 2024-04-25 13:51:19

我建议遵循以下步骤:

  1. 定义用户模型,添加所需字段,例如birth_datephoto

    # filename: myapp/models.py
    
    from django.db import models
    from django.utils.translation import ugettext as _
    from datetime import datetime
    from django.conf import settings
    from django.contrib.auth.models import AbstractUser, Group
    
    class MyUser(AbstractUser):
    
        birth_date = models.DateField(null=True)
        photo = models.ImageField(upload_to=..., null=True, blank=True, verbose_name=_("photo"))
    
  2. 创建自定义注册表:

    # in file myapp/forms.py
    from django import forms
    from registration.forms import RegistrationForm
    
    class MyRegistrationForm(RegistrationForm):
    
        birth_date = ...
        photo = ...
    
  3. 编写自定义注册视图:

    # in file myapp/views.py
    
    from registration.backends.simple.views import RegistrationView
    from .forms import MyRegistrationForm
    
    class MyRegistrationView(RegistrationView):
    
        form_class = MyRegistrationForm
    
        def register(self, request, form):
    
            user = super(MyRegistrationView, self).register(request, form)
            user.birth_date = form.cleaned_data["birth_date"]
            user.photo = form.cleaned_data["photo"]
    
            user.save()
    
            return user
    
  4. 告诉系统您将使用自定义用户模型

    # in file settings.py
    AUTH_USER_MODEL = "myapp.MyUser"
    
  5. 添加url以调用自定义注册视图

    # in file urls.py
    
    from myapp.views import MyRegistrationView
    ...
    
    urlpatterns = [
        ...
        url(r'^accounts/register/$', MyRegistrationView.as_view(), name="registration_register"),
        ...
    ]
    

相关问题 更多 >