IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Flask项目的完整创建 七牛云与容联云 -> 正文阅读

[Python知识库]Flask项目的完整创建 七牛云与容联云

1. 创建文件夹(或从pycharm直接创建)

在桌面随意创建一个空文件夹

2.下载所需插件

在这里插入图片描述

下载命令 pip install -r txt文件名

3.创建启动文件

创建app.py文件,用工厂方法的方式将app封装起来,再创建一个create_app.py文件

create_app

from flask import Flask
from models.models import db
from views.user_bp import user_bp
from flask_cors import CORS

def create_app(config):

    flask_app = Flask(__name__)
    # 跨域
    CORS(flask_app)
    # 加载配置项
    flask_app.config.from_object(config)
    # 初始化数据库 必须在配置项之后
    db.init_app(flask_app)
    # 挂载蓝图
    flask_app.register_blueprint(user_bp)
    return flask_app

加载配置项
要再创建settings目录创建config

非载入七牛云容联云版本

# 默认配置项
class DefaultConfig:
    SECRET_KEY = "asdaweq"
    SQLALCHEMY_DATABASE_URI=""
    SQLALCHEMY_TRACK_MODIFICATIONS=False
    SQLALCHEMY_ECHO=True
    JSON_AS_ASCII=False
    # 验证码配置项
    SMS_TIME = 5

# 开发阶段配置项(基础自上面的类)
class DevConfig(DefaultConfig):
    SQLALCHEMY_DATABASE_URI="mysql+pymysql://root:123@127.0.0.1:3306/h2111p7"

载入容联云七牛云版本

settings文件里配置secret.py文件配置容联 七牛

class SecretConfig():
    RL_ACC_ID = ""
    RL_ACC_TOKEN = ""
    RL_APP_ID = ""
    RL_TID = "1"
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT =6379

    QINIU_AK = ''
    QINIU_SK = ''
    QINIU_BUCKET_NAME = ''
    QINIU_BASE_URL = ''

在settings目录创建config

from settings.secret import SecretConfig
# 继承自secret中的类
class DefaultConfig(SecretConfig):
    SECRET_KEY = "asdaweq"
    SQLALCHEMY_DATABASE_URI=""
    SQLALCHEMY_TRACK_MODIFICATIONS=False
    SQLALCHEMY_ECHO=True
    JSON_AS_ASCII=False
    SMS_TIME = 5

# 继承上面的类
class DevConfig(DefaultConfig):
    SQLALCHEMY_DATABASE_URI="mysql+pymysql://root:123@127.0.0.1:3306/h2111p7"

app

# 导入封装的create app
from create_app import create_app
# 导入setting里的配置项
from settings.config import DevConfig


app = create_app(DevConfig)

if __name__ == '__main__':
    app.run()

4.创建蓝图

创建views视图下的py文件

from flask import Blueprint,Resource
# 实例化蓝图对象
# url_prefix全局路由地址
user_bp = Blueprint("user_bp",__name__,url_prefix="/users")
# api  路由收集器
api = Api(user_bp)


class UserView(Resource):
	def get(self):
		pass
api.add_resource(类名,"/路由名")

5.创建模型类

创建一个model目录下的models.py文件

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

db = SQLAlchemy()

class UserModel(db.Model):
    uid = db.Column(db.Integer,primary_key=True,autoincrement=True,comment="用户ID")
    mobile = db.Column(db.String(11),comment="手机号")
    username = db.Column(db.String(32),default="",comment="昵称")
    img = db.Column(db.String(200),default="",comment="头像")
    reg_time = db.Column(db.DateTime,default=datetime.now,comment="注册时间")
    intro = db.Column(db.String(256),default="这个人很懒,什么都没有留下",comment="简介")
    status = db.Column(db.Boolean,default=False,comment="true:冻结 false:正常")

根目录创建manage.py文件

from flask_migrate import Migrate,MigrateCommand
from flask_script import Manager
from app import app
from models.models import db

# 1.创建黑窗口
manage = Manager(app)
# 2.实例化迁移类
migrate = Migrate(app,db)
# 3.给黑窗口添加命令
manage.add_command("db",MigrateCommand)

if __name__ == '__main__':
    manage.run()

6.JWT 七牛云 容联云的配置

创建utils文件

JwtTool 配置

import time
import jwt  # pip install pyjwt
from flask import current_app
class JwtTool():
    '''
    jwt管理
    '''
    def create(self,payload,ex=3600):
        '''
        生成jwt
        :param payload: 载荷
        :return: string jwt
        '''
        payload["exp"] = int(time.time())+ ex # 默认有效期1小时
        secret_key = current_app.config.get("SECRET_KEY")
        token = jwt.encode(payload,secret_key,algorithm="HS256")
        return token
    def valid(self,token):
        '''
        校验jwt
        :param token: JWT
        :return: 返回payload
        '''
        secret_key = current_app.config.get("SECRET_KEY")
        try:
            payload = jwt.decode(token, secret_key, algorithms="HS256")
            return payload
        except Exception as e:
            print(e)
            return False

if __name__ == '__main__':
    from app import app
    with app.app_context():
        j = JwtTool()
        jwt_token = j.create({
            "aaa":"bbb"
        })
        a = j.valid(jwt_token)
        print(a)

QiniuTool文件的配置 七牛云上传文件

from qiniu import Auth,put_file
from flask import current_app

class QiniuTool():
    def __init__(self):
        ak = current_app.config.get("QINIU_AK")
        sk = current_app.config.get("QINIU_SK")
        self.q = Auth(ak,sk)
        self.bucket_name = current_app.config.get("QINIU_BUCKET_NAME")
    def upload(self,localfilepath,newfilename):
        '''
        七牛云上传图片
        :param localfilepath: 本地文件地址
        :param newfilename: 上传后的文件名
        :return:
        '''
        token = self.q.upload_token(self.bucket_name,newfilename,expires=3600)
        print(token)
        res = put_file(token,newfilename,localfilepath,version='v2')
        print(res)
        if res[0]['key'] == newfilename:
            return newfilename
        else:
            return False

if __name__ == '__main__':
    from app import app
    with app.app_context():
        QiniuTool().upload("./../static/img/图片.png",'static/img/图片.png')

SmsTools的配置 容联云发送短信

from ronglian_sms_sdk import SmsSDK
from flask import current_app
import json,redis


class SmsTool():
    '''
    发送短信类
    '''
    def __init__(self):
        accId = current_app.config.get("RL_ACC_ID")
        accToken = current_app.config.get("RL_ACC_TOKEN")
        appId = current_app.config.get("RL_APP_ID")
        self.sdk = SmsSDK(accId,accToken,appId)

        host = current_app.config.get("REDIS_HOST")
        port = current_app.config.get("REDIS_PORT")

        self.rds = redis.Redis(host=host,port=port)


    def send(self,phone,code):
        '''
        发送短信接口
        :param phone: 手机号
        :param code: 验证码
        :return: Bool 发送成功开始失败
        '''
        tid = current_app.config.get("RL_TID")
        t = current_app.config.get("SMS_TIME")  # 有效期,从配置文件获取
        # 把验证码存入redis里面
        key = "sms_%s"%phone
        self.rds.set(key,code,ex=t*60)

        datas = (code,t)
        rs = self.sdk.sendMessage(tid,phone,datas) # 返回的是json字符串
        rs_data = json.loads(rs)
        if rs_data["statusCode"] == "000000":
            return True
        return False

# if __name__ == '__main__':
#     from app import app
#     with app.app_context():
#         s = SmsTool()
#         s.send("150369602231","6666")
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:40:12  更:2022-08-06 10:40:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 15:39:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计