我是 django 的新手,我对 django-registration 很迷茫。目前我已经设置了 django 注册,但我需要为它添加另一个字段以获取电话号码。我需要注册字段中的电话号码字段,这样我就可以使用 twilio 的 api 通过文本而不是电子邮件发送验证链接。我将如何将这一字段添加到 django-registration?
请您参考如下方法:
我在工作中使用 django,对于我们过去常常将模型附加到用户的那种问题,例如:
- 您创建一个新模型,例如为用户创建带有 OneToOneField 的配置文件
- 将您想要的字段添加到该配置文件模型中,例如(tlf、国家/地区、语言、日志...)
- 创建 admin.py 来管理这个模型(配置文件),同时在 django admin 中管理用户
配置文件模型示例
class Profile(models.Model):
user = models.OneToOneField(User)
phone = models.CharField(max_length=255, blank=True, null=True, verbose_name='phone')
description = models.TextField(blank=True, verbose_name='descripction')
...
...
class Meta:
ordering = ['user']
verbose_name = 'user'
verbose_name_plural = 'users'
admin.py 示例
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class ProfileInline(admin.StackedInline):
model = Profile
can_delete = False
filter_horizontal = ['filter fields'] # example: ['tlf', 'country',...]
verbose_name_plural = 'profiles'
fk_name = 'user'
class UserAdmin(UserAdmin):
inlines = (ProfileInline, )
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
list_filter = ('is_staff', 'is_superuser', 'is_active')
admin.site.unregister(User) # Unregister user to add new inline ProfileInline
admin.site.register(User, UserAdmin) # Register User with this inline profile
创建一个用户并为其附加个人资料
# Create user
username = 'TestUser'
email = 'test@example.com'
passw = '1234'
new_user = User.objects.create_user(username, email, passw)
# Create profile
phone = '654654654'
desc = 'Test user profile'
new_profile = Profile(user=new_user, phone = phone, description=desc)
new_profile.profile_role = new_u_prole
new_profile.user = new_user
# Save profile and user
new_profile.save()
new_user.save()
现在您将把这个 Profile 模型附加到每个用户,您可以将您想要的字段添加到 Profile 模型,例如,如果您:
user = User.objects.get(id=1)
您可以通过以下方式访问他的个人资料:
user.profile
访问手机
user.profile.phone
