Flask基础配置

下载Flask版本

Flask==1.1.4
Flask-Caching==1.10.1
Flask-Cors==3.0.10
Flask-Migrate==2.7.0
Flask-RESTful==0.3.9
Flask-Script==2.0.6
Flask-SQLAlchemy==2.5.1
MarkupSafe==2.0.1
PyJWT==2.3.0
PyMySQL==1.0.2
qiniu==7.6.0
redis==4.2.2
SQLAlchemy==1.4.27
Flask-Cors==3.0.10

配置问价setting.py

class Config:
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123@127.0.0.1:3306/flask_2"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ECHO = True
    JSON_AS_ASCII = False
    REDIS_HOST = "127.0.0.1" 
    REDIS_PASSWORD = "123"  #MYSQL密码
    REDIS_PORT = "6379"    #MYSQL端口

入口文件main.py

from create_flask import create_app
from settings.setting import Config

app = create_app(Config)


#
if __name__ == '__main__':
    app.run(debug=True)

工厂方法文件create_app

from flask import Flask
from flask_cors import CORS
from flask_migrate import Migrate
from models.model import db
from views.user import blue1

def create_app(config):
    flask_app = Flask(__name__)
    flask_app.config.from_object(config)#读取配置文件
    CORS(flask_app)#跨域,只需配置这一个所有跨域问题解决
    Migrate(flask_app,db)#迁移
    db.init_app(flask_app)
    flask_app.register_blueprint(blue1)  #注册蓝图
 
    return flask_app

model.py文件

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()


class User(db.Model):
    id = db.Column(db.Integer,primary_key=True,autoincrement=True,comment="id")
    username = db.Column(db.String(50),nullable=False,comment="用户名")
    password = db.Column(db.String(256),nullable=False,comment="密码")
    phone = db.Column(db.String(11),unique=True,nullable=False,comment="手机号")#unique唯一

view.py文件

import string
import redis
from flask import Blueprint, jsonify, Response, request
from flask_restful import Api, reqparse
from models.model import User, db
import re
import random
from captcha.image import ImageCaptcha




blue1 = Blueprint("blue1",__name__)
api = Api(blue1)

#校验用户名是否重复
@blue1.route("/users/check/username/<name>/")
def check_username(name):
    try:
        user = User.query.get(User.username == name)
    except:
        return jsonify({
            "code":200,
            "msg":"用户名可以使用"
        })
    return jsonify({
        "code":400,
        "msg":"用户名重复"
    })


#校验手机号
@blue1.route("/users/check/mobile/<mobile>/")
def check_mobile(mobile):
        print("手机号",mobile)
    #1.验证手机号是否满足规则
        #手机号以1开头,第二位3-9之间的数字,长度为11,之允许数字
        if not re.findall(r"^1[3-9]\d{9}$",mobile):
            return jsonify({
                "code":204,
                "msg":"手机号不合法"
            })
    #2.根据手机号查询用户,如果能查询到用户,说明已经注册则手机号不能在注册
        user_query_set = User.query.filter(User.phone == mobile).first()  #为什么不加first?????
        print("------",user_query_set)
        # print("-----------+",user_query_set.first())
        if not user_query_set:
            return jsonify({
                "code":200,
                "msg":"手机号可以正常注册"
            })
        return jsonify({
            "code":204,
            "msg":"手机号已经注册"
        })


#生成图片验证码
@blue1.route("/users/image_code/<image_code_id>/")
def create_Img(image_code_id):
    alpha_number =  string.ascii_lowercase + string.digits
    sms_img_code = "".join(random.sample(alpha_number,4)) #sample随机取
    print("验证码是",sms_img_code)

    #2.生成画布
    img_cap = ImageCaptcha()
    #把验证码放入画布中
    img_code = img_cap.generate(sms_img_code)

    # 存入redis中
    key = "sms_code" + image_code_id
    r = redis.Redis(password=123)
    r.set(key, sms_img_code, ex=300)
    r.close()

    return Response(img_code,mimetype="image/ong")


#校验图片验证码
@blue1.route("/users/check_image_code/")
def check_image_code():
    uuid = request.args.get("imageCodeID")
    input_code = request.args.get("imageCode")
    print("前端的uuid",uuid)
    key = "sms_code" + uuid
    r = redis.Redis(password=123)
    code = r.get(key)
    # print("]]]]]]]]]]]]",code)
    # print("//",type(code))
    if not code:
        return jsonify({
            "code":400,
            "msg":"验证码已经过期"
        })

    if code.decode() == str(input_code):
        return jsonify({
            "code":200,
            "msg":"验证码校验成功"
        })
    else:
        return jsonify({
            "code":400,
            "msg":"验证码错误"
        })

@blue1.route("/users/register/",methods=["POST"])
def register_user():
    req = reqparse.RequestParser()
    req.add_argument("userName")
    req.add_argument("pwd")
    req.add_argument("mobile")
    req.add_argument("agree")
    args = req.parse_args()
    if not all([args['userName'],args['pwd'],args['mobile'],args['agree']]):
        return jsonify({
            "code":204,
            "msg":"用户信息不完整"
        })

    try:
        #注册用户
        user = User(username=args['userName'], password=args['pwd'], phone=args['mobile'])
        db.session.add(user)
        db.session.commit()
        return jsonify({
            "code":200,
            "msg":"用户注册成功"
        })
    except Exception as e:
        return jsonify({
            "code":400,
            "msg":"用户注册失败"
        })






迁移数据库的命令

flask db init 

flask db migrate

flask db upgrade

如果是manage.py脚本做的迁移

python manage.py db init

python manage.py db migrate

python manage.py db upgrade

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值