用户模型:
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
继承于django的AbstractUser的类,其中包括用户名,邮箱,密码等字段
class User(AbstractUser):
phone = models.CharField(max_length=11, unique=True, verbose_name='手机号码')
fixtel = models.CharField(max_length=11, unique=True, verbose_name='固定电话', null=True)
qq = models.CharField(max_length=11, unique=True, verbose_name='qq', null=True)
birth = models.DateField(verbose_name='出生日期', null=True)
faceimg = models.ImageField(verbose_name='头像')
class Meta:
db_table = 'users'
verbose_name = '用户'
verbose_name_plural = verbose_name
视图函数:
from rest_framework.generics import CreateAPIView
from .serializers import UserSerialize
class UserView(CreateAPIView):
serializer_class = UserSerialize
创建模型序列器(ModelSerializer)类:
from rest_framework import serializers
from django_redis import get_redis_connection
from .models import User
import re
class UserSerialize(serializers.ModelSerializer):
password_confirm = serializers.CharField(label='确认密码', write_only=True)
phone_msg = serializers.CharField(label='短信验证码', write_only=True)
class Meta:
model = User
fields = ('username', 'phone', 'password', 'password_confirm', 'phone_msg', 'email')
def validate(self, data):
#在此处进行对前端用户名、密码等的校验
return data
def create(self, validate_data):
del validate_data['password_confirm']
del validate_data['phone_msg']
user = User.objects.create_user(**validate_data)
return user
可将通过post请求从前端获取的数据反序列化存入数据库当中。
值得注意的一点是,当反序列化时,需要添加 write_only=True 。