使用django-registration-redux时遇到问题。
我想将其他字段添加到用户作为生日,电话等,但是我很难在模型中扩展User类。将这些字段添加到我的用户并在表单注册和登录中显示的最佳表单是什么?
答案 0 :(得分:2)
我建议按照以下步骤操作:
定义您的用户模型,添加您的deird字段,例如birth_date
和photo
:
# 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 = ...
编写自定义注册视图:
# 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"
添加网址以调用自定义注册视图
# in file urls.py
from myapp.views import MyRegistrationView
...
urlpatterns = [
...
url(r'^accounts/register/$', MyRegistrationView.as_view(), name="registration_register"),
...
]