小福利,flask创建项目步骤(2)--用户注册

大家好,我是天空之城,今天给大家带来小福利,flask创建项目步骤(2)–用户注册
用户注册
csrf验证
https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
用户注册业务逻辑分析
在这里插入图片描述

用户注册接口设计和定义
设计接口基本思路
• 对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口。
• 设计接口的思路:
• 分析要实现的业务逻辑:
• 明确在这个业务中涉及到几个相关子业务。
• 将每个子业务当做一个接口来设计。
• 分析接口的功能任务,明确接口的访问方式与返回数据:
• 请求方法(如GET、POST、PUT、DELETE等)。
• 请求地址。
• 请求参数(如路径参数、查询字符串、表单、JSON等)。
• 响应数据(如HTML、JSON等)。

用户注册接口设计
请求方式
选项 方案
请求方法 POST
请求地址 /users

参数名 类型 是否必传 说明
password string 是 密码
password2 string 是 确认密码
mobile string 是 手机号
sms_code string 是 短信验证码

响应结果
响应结果 响应内容
注册失败 响应错误提示
注册成功 重定向到首页

用户注册接口定义

@api.route("/users", methods=["POST"])
def register():
    """注册
    请求的参数: 手机号、短信验证码、密码、确认密码
    参数格式:json
    """
    # 获取请求的json数据,返回字典


用户模型类

from datetime import datetime
from . import db
from werkzeug.security import generate_password_hash, check_password_hash
from home import constants


class BaseModel(object):
    """模型基类,为每个模型补充创建时间与更新时间"""

    create_time = db.Column(db.DateTime, default=datetime.now)  # 记录的创建时间
    update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)  # 记录的更新时间


class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "h_user_profile"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    # 加上property装饰器后,会把函数变为属性,属性名即为函数名
    @property
    def password(self):
        """读取属性的函数行为"""
        # print(user.password)  # 读取属性时被调用
        # 函数的返回值会作为属性值
        # return "xxxx"
        raise AttributeError("这个属性只能设置,不能读取")

    # 使用这个装饰器, 对应设置属性操作
    @password.setter
    def password(self, value):
        """
        设置属性  user.passord = "xxxxx"
        :param value: 设置属性时的数据 value就是"xxxxx", 原始的明文密码
        :return:
        """
        self.password_hash = generate_password_hash(value)

    def check_password(self, passwd):
        """
        检验密码的正确性
        :param passwd:  用户登录时填写的原始密码
        :return: 如果正确,返回True, 否则返回False
        """
        return check_password_hash(self.password_hash, passwd)

    def to_dict(self):
        """将对象转换为字典数据"""
        user_dict = {
            "user_id": self.id,
            "name": self.name,
            "mobile": self.mobile,
            "avatar": constants.QINIU_URL_DOMAIN + self.avatar_url if self.avatar_url else "",
            "create_time": self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_to_dict(self):
        """将实名信息转换为字典数据"""
        auth_dict = {
            "user_id": self.id,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
        return auth_dict


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值