55 - restful接口案例(新闻)-03-注册和登录

1. 创建用户模型

        (1). apps / models / user_model.py 创建用户model
from apps.models import BaseModel
from exts import db
 
 
class User(BaseModel):
    __tablename__ = "user"
    username = db.Column(db.String(50), nullable=False, unique=True)
    password = db.Column(db.String(128))
    phone = db.Column(db.String(11), unique=True, nullable=False)
    icon = db.Column(db.String(256))
 
    def __str__(self):
        return self.username
        (2). app.py 引入模型类
from apps.models.user_model import *
        (3). 执行指令进项数据库迁移
# python app.py db init  # 不需要执行了,只在第一次执行一次即可
python app.py db migrate   
python app.py db upgrade   

2. 定义API

        (1). apps / apis / user_api.py 定义user蓝图      
from flask import Blueprint
from flask_restful import Api
 
user_bp = Blueprint('user', __name__)
 
api = Api(user_bp)
        (2). apps / __init__.py注册蓝图
 app.register_blueprint(user_bp)
        (3). apps / apis / user_api.py 定义,请求和返回格式
# 输入: 验证前端参数
sms_parser = reqparse.RequestParser()
sms_parser.add_argument('mobile', type=inputs.regex(r'^1[356789]\d{9}$'), help="手机号码格式错误", required=True, location="form")

# 输入
lr_parser = sms_parser.copy()  # 浅拷贝:将上面的parser拷贝一份
lr_parser.add_argument("code", type=inputs.regex(r'^\d{4}$'), help="必须输入四位数字验证码", required=True, location="form")
 
# 输出
user_fields = {
    "id": fields.Integer,
    "username": fields.String,
}
        (4). apps / apis / user_api.py 定义注册登录接口
# 用户注册和登录
class LoginAndRegisterApi(Resource):
    def post(self):
        args = lr_parser.parse_args()
        mobile = args.get("mobile")
        code = args.get("code")

        # 数据库中查找是否存在此mobile
        if code=="1111":
            users = User.query.filter(User.phone == mobile).first()
            # 判断列表中是否存在用户
            if not users:
                # 注册处理
                users = User()
                users.phone = mobile
                s = ""
                for i in range(13):
                    ran = random.randint(0, 9)
                    s += str(ran)

                users.username = "用户" + s
                db.session.add(users)
                db.session.commit()
            # 登录处理,进入登录状态,session,cookie,cache(redis)
            session["mobile"] = 1
            return marshal(users, user_fields)  # 输出的内容
        else:
            return {"errmsg": "验证码错误", "status": 400}



        (5).  apps / apis / user_api.py 视图函数绑定api
# 登录注册
api.add_resource(LoginAndRegisterApi, "/login")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值