![](https://img-blog.csdnimg.cn/dfc14fec84cc410aa80c6b23256db4e6.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Flask项目实战(商城)
flask项目实战
敲代码敲到头发茂密
欲戴王冠,必承其重
展开
-
【Flask项目】项目准备之-容联云短信服务平台使用—发送短信、Flask-limiter限流
SDK参考(新版)云通讯平台为开发者提供多语言SDK,让您可以轻松地选择你熟悉的编程语言来体验。短信服务新版SDK源码已经托管至开源平台Github您可以通过SDK调用云通讯短信API。您可以通过以下方式获得相关指引和SDK 源码:如果使用的时python语言的话,SDK相关文件找我要将SDK文件放入到项目的公共方法下的工具utils中SendMessage.py文件执行main函数:验证码发送成功,手机收到验证码用户注册(后端)用户获取短信验证码代码class User_S原创 2022-04-17 08:06:55 · 1141 阅读 · 1 评论 -
【Flask项目2】银行卡模块模型类设计和添加银行卡接口开发、银行卡查询接口开发、删除银行卡接口开发和序列化操作(17)
comment——models——bank_card.py一、创建模型类、映射到数据库中from comment.models import dbfrom sqlalchemy import ForeignKey# 银行卡信息的模型类class BankCard(db.Model): __tablename__ = 't_bankcard' bankInfoId = db.Column(db.Integer, primary_key=True, autoincrement=Tr原创 2022-04-14 06:41:52 · 495 阅读 · 0 评论 -
【Flask项目2】站内消息模型类设计、发送站内消息接口开发、查询当前用户收到的信息列表开发以及项目中的分页操作(16)
创建站内消息资源类from flask_restful import Resource,reqparsefrom flask import g,current_appfrom comment.utils.decorators import login_requiredfrom comment.models.user import Userfrom comment.models.letter import Letter,Letter_detailfrom comment.models import原创 2022-04-13 06:45:47 · 1380 阅读 · 6 评论 -
【Flask项目2】登录拦截器的使用和退出登录的接口开发(14)
comment—utils—》decorators.py自定义一个装饰器,如果登录了继续访问。如果没有登录直接返回(不能继续访问)from flask import gdef login_required(func): def wrapper(*args,**kwargs): if g.user_id is not None: return func(*args,**kwargs) else: return {'message':'用户没有登录,不能访问'} return w原创 2022-04-12 06:39:37 · 1059 阅读 · 2 评论 -
【Flask项目2】请求钩子的设计和注册(13)
comment—utils—request_auth.py定义请求钩子函数:在请求进来之前得到request中携带的token,开始验证tokenfrom flask import g,requestfrom comment.utils.tokens_pyjwt import verify_tokensdef jwt_request_auth(): ''' 从请求(request)中获取token,并且验证token,验证成功之后把用户id保存到全局变量g中 ''' g.user_id=N原创 2022-04-11 06:42:27 · 345 阅读 · 4 评论 -
【Flask项目2】登录接口的开发(12)
创建登录资源类重点:校验密码financial—》resource—》user—》user_resource.pyclass Login(Resource): ''' 登录 ''' def post(self): username=request.form.get('username') password=request.form.get('password') rq=reqparse.RequestParser()原创 2022-04-11 06:42:05 · 236 阅读 · 2 评论 -
【Flask项目2】生成token和验证token(11)
用户登录用户登录的功能我们使用 Json Web Token(JWT) 来为登录用户生成token令牌,并返回给客户端,客户端有了令牌之后,每次访问服务器,都携带Token,后台经过验证就能知道当前登录的用户是谁,以实现鉴权,权限控制。comment——utils——token_pyjwt.py生成token和验证tokenimport jwtfrom comment.utils import constfrom datetime import datetime,timedeltafrom j原创 2022-04-10 10:17:15 · 2039 阅读 · 0 评论 -
【Flask项目2】*用户注册和添加账户(10)
financial—resource—user—user_resource定义资源类,用户注册接口的实现业务逻辑:张三(我)——》邀请李四注册账户——》李四进行注册操作(输入用户名、密码、手机号、验证码、邀请码(非必填)),如果李四填写我的邀请码,邀请码在我的数据库user表的inviteId字段存储,需要去校验邀请码是否一致(张三数据库中的验证码==李四表单输入的验证码,通过校验)。注册成功后,张三的用户代金券加50,邀请用户+1;李四user表中增加了一条数据,并且创建了账户信息。代码逻辑cl原创 2022-04-10 10:16:52 · 767 阅读 · 0 评论 -
【Flask项目2】发送短信验证码和测试验证码是否发送成功(9)
发送短信验证码配置financial—resource—user—user_resource.py定义资源类class SMSCode(Resource): ''' 发送手机短信,验证手机号码 ''' def get(self): ##如果是get请求,请求的参数往往是:参数名+参数 phone = request.args.get('phone').strip() # 生成一个随机的验证码 code = rando原创 2022-04-09 07:20:20 · 530 阅读 · 0 评论 -
【Flask项目2】验证手机号是否已经存在接口的开发(8)
financial—resource—user—user_resource.py定义资源类class IsExistPhone(Resource): ''' 判断手机号是否存在 ''' def post(self): # 如果是post请求,请求的参数往往会封装成json对象 phone = request.form.get('phone') user = User.query.filter(User.phone == phone).f原创 2022-04-09 07:20:00 · 330 阅读 · 0 评论 -
【Flask项目2】创建用户模块的蓝图(7)
项目架构创建蓝图user_bp=Blueprint('user',__name__,url_prefix='/user')创建restful风格的apiuser_api.=Api(user_bp)使用定制好的返回前端的json格式user_api.representation('application/json')(output_json)加载蓝图中的资源类from financial.resource.user.user_resource import Login加载资源us原创 2022-04-08 09:23:31 · 354 阅读 · 0 评论 -
【Flask项目2】定制统一的JSON返回格式(6)
comment—utils—output.pyfrom flask import make_response, current_appfrom flask_restful.utils import PY3from json import dumps# todo 将字典格式的响应数据转化为json格式的响应数据def output_json(data, code, headers=None): """Makes a Flask response with a JSON encoded b原创 2022-04-08 09:23:05 · 669 阅读 · 0 评论 -
【Flask项目2】python对象分页数据序列化基类(5)
comment—utils—serializer.py文件class BasePaginateSerializer(object): """分页数据序列化基类""" def __init__(self, paginate): #简化代码,可以满足对象的拷贝 self.pg = paginate if not self.pg: return paginate self.has_next = self.pg.原创 2022-04-07 06:43:02 · 206 阅读 · 0 评论 -
【Flask项目2】创建模型类映射到数据库,密码加密实现(3)
用户模型类comment—models—user.pyfrom comment.models import dbfrom werkzeug.security import generate_password_hash,check_password_hashfrom datetime import datetimeclass User(db.Model): __tablename__ = 't_user' id = db.Column(db.BIGINT, primary_key=原创 2022-04-07 06:42:32 · 368 阅读 · 0 评论 -
【Flask项目2】多进程下的日志文件(2)
comment—utils—financial_logging.pyimport loggingimport logging.handlersfrom flask import requestimport os'''定义日志的格式和日志输出的目标'''class RequestShoppingFormatter(logging.Formatter): ''' 自定义的日志输出格式 ''' def format(self, record): r原创 2022-04-06 08:55:20 · 625 阅读 · 2 评论 -
【Flask项目2】项目基本架构配置(1)
数据库配置、redis缓冲数据库配置、日志配置、生成环境和开发环境配置settings—default.py文件class Config: # 配置数据库和SQLALchemy HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'test_financial' USERNAME = 'root' PASSWORD = 'root' DB_URI = "mysql+pymysql://{username}原创 2022-04-06 08:54:56 · 338 阅读 · 1 评论 -
【Flask项目2】模型类的映射方式新版本和旧版本(4)
方式一:模型类的映射方式旧版本1、Flask-Migrate介绍k-migrate可以十分方便的进行数据库的迁移与映射,将我们修改过的ORM模型映射到数据库中。flask_migrate是基于Alembic进行的一个封装,并集成到Flask中,所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中。如果导入不成功,是因为flask与flask-migrate的版本冲突造成的解决办法,1、全面降低版本pip install flask-migrate2、Flask-原创 2022-04-05 08:26:05 · 523 阅读 · 0 评论 -
SKU的概念和理解
一、什么是SKUSKU=Stock Keeping Unit(库存量单位)用以区别开这些不同商品的属性,又称作SKU属性,因为它决定了SKU的绝对数量。SKU这是对于大型连锁超市DC(配送中心)物流管理的一个必要的方法。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。单品:对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性与其他商品存在不同时,可称为一个单品。二、什么是SKU属性和选项比如某件衣服有多种颜色、多种尺码,这些属原创 2022-04-01 06:39:43 · 8798 阅读 · 0 评论 -
【Flask项目】sqlalchemy原生sql查询,返回字典形式数据
在原生sql查询的时候,返回一个list,内部是tuple,他们看似是tuple,实则并不是而是一个特殊的类型"<class ‘sqlalchemy.util._collections.result’>"这是一个 AbstractKeyedTuple 对象它拥有一个 keys() 方法,可以取到所有的key我们可以通过这个方法将查询结果转换为字典dic_list = datalist_format([dict(zip(result.keys(), result)) for result原创 2022-03-31 08:11:34 · 2353 阅读 · 3 评论 -
【Flask项目】项目准备之-Flask-Migrate数据库模型映射
1、Flask-Migrate介绍flask-migrate可以十分方便的进行数据库的迁移与映射,将我们修改过的ORM模型映射到数据库中。flask-migrate是基于Alembic进行的一个封装,并集成到Flask中,所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中。安装:pip install flask-migrate...原创 2022-03-30 09:00:52 · 771 阅读 · 0 评论 -
【Flask项目】项目准备之-创建User模型类
项目目录models目录下的__init__.py文件from flask_sqlalchemy import SQLAlchemydb=SQLAlchemy()shop目录下的__init__.py文件,才是初始化SQLALchemy#shop目录中放置项目的蓝图from flask import Flaskfrom settings.default import map_configfrom rescoures.user import user_bpfrom rescoures.o原创 2022-03-29 13:29:37 · 486 阅读 · 0 评论 -
【Flask项目】项目准备之-Flask-Script说明
1、Flask-Script介绍Flask-Script的作用是可以通过命令行的形式来操作Flask。Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;安装pip install flask-script2、Flask-Script基本使用在一个在flask项目中,新建一个新的hello.py,其中的hello功能函数我们原创 2022-03-28 08:28:36 · 978 阅读 · 1 评论 -
【Flask项目】项目准备之-创建模块的蓝图
__init__.py文件:#放置用户蓝图,包括用户模块的所有资源from flask import Blueprintfrom flask_restful import Resource,Api#创建蓝图user_bp=Blueprint('user',__name__)#定义flask_restful的apiuser_api=Api(user_bp)#加载资源from shop.rescoures.user.user_resource import Shopinguse.原创 2022-03-27 18:58:26 · 697 阅读 · 0 评论 -
【Flask项目】项目准备之-创建项目的APP对象
项目目录settings目录:负责整个项目的配置信息:数据库配置、日志的配置、开发环境的配置信息class Config: #配置数据库和SQLALchemy HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'test2' USERNAME = 'root' PASSWORD = 'root' DB_URI = "mysql+pymysql://{username}:{password}@{hos原创 2022-03-26 10:10:40 · 845 阅读 · 2 评论 -
【Flask项目】项目准备之-创建gitee账户、远程仓库以及pycharm中创建项目
1、创建远程仓库1、下载和安装GIThttps://git-scm.com/download/win2、创建远程仓库登陆注册Githubhttps://github.com/ 或者登录注册码云https://gitee.com/。操作步骤是一样的,使用码云速度会快很多。3、通过命令克隆到本地仓库4、使用Pycharm打开本地仓库5、修改忽略文件:增加.idea配置。可以限制Pycharm软件生成的文件不提交到仓库中。6、创建项目首先新建一个新的Python虚拟环境,然后安装Flas原创 2022-03-25 10:22:49 · 730 阅读 · 4 评论