使用CreateAPIView创建用户 django Day13

用户模型:

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 。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值