我在使用 django-registration-redux 时遇到问题。
我想向用户添加其他字段,如生日、电话等,但对我来说很难在模型中扩展用户类。将这些字段添加到我的用户并在表单注册和登录中显示它的最佳表单是什么?
最佳答案
我建议按照以下步骤操作:
定义您的用户模型,添加您想要的字段,例如
出生日期
和照片
:# 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"))
创建自定义注册表单:
# in file myapp/forms.py from django import forms from registration.forms import RegistrationForm class MyRegistrationForm(RegistrationForm): birth_date = ... photo = ...
编写自定义注册 View :
# 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
告诉系统您将使用自定义用户模型
# in file settings.py AUTH_USER_MODEL = "myapp.MyUser"
添加一个 URL 来调用您的自定义注册 View
# in file urls.py from myapp.views import MyRegistrationView ... urlpatterns = [ ... url(r'^accounts/register/$', MyRegistrationView.as_view(), name="registration_register"), ... ]
关于python - 自定义用户和表单的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510474/