• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共46篇

    python3.X - Web - Flask1.1.1

关闭

返回栏目

关闭

返回python3.X - Web - Flask1.1.1栏目

4 - 基础 - 有蓝图的应用

作者:

贺及楼

成为作者

更新日期:2024-06-13 20:21:40

基础 - 有蓝图的应用

作用:不用把代码都放到一个文件里,可以进行分类

文件夹

baidu文件夹
|— baidu.py
|— app文件夹
—-|init.py(代表是python文件,这里算配置文件)
—-|abc.py
—-|static文件夹(静态文件)
—-|templates文件夹(html模版文件)

主程序,拿百度做例子吧

baidu.py

  1. from app import create_app
  2. app = create_app()
  3. if __name__=='__main__':
  4. #app.run(host='0.0.0.0',port=8000,debug=True)
  5. #app.run(host='0.0.0.0',port=8000)
  6. #app.run(host='127.0.0.1',port=8000,debug=True)
  7. app.run(host='127.0.0.1',port=8000)

自己修改端口号了

init文件

  1. baidu/app/__init__.py
  1. #flask
  2. from flask import Flask,session
  3. #数据库
  4. from flask_sqlalchemy import SQLAlchemy
  5. db = SQLAlchemy(use_native_unicode='utf8mb4')#实例化SQLAlchemy和使用编码方式
  6. from datetime import timedelta,datetime
  7. #有的蓝图
  8. from .abc import * #abc文件
  9. #os随机数
  10. import os
  11. #创建app
  12. def create_app():
  13. app = Flask(__name__,static_url_path='')
  14. #app.debug = False
  15. app.debug = True
  16. #app.secret_key = '123456789'#自定义的session秘钥
  17. # 设置配置文件,XXX是数据库名字,是表的上一层数据库名字
  18. app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:@127.0.0.1:3306/XXX?charset=utf8mb4"
  19. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  20. app.config['SQLALCHEMY_ECHO'] = True
  21. app.config["SECRET_KEY"] = os.urandom(24)
  22. app.config['WTF_CSRF_SECRET_KEY'] = 'NameError'
  23. app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=1) # 修改缓存时间,秒做单位
  24. app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(seconds=1) # 修改回话存活时间,秒做单位
  25. #session过期时间
  26. app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=6)
  27. #查看sqlalchemy执行的原始sql语句
  28. app.config['SQLALCHEMY_ECHO'] = True
  29. # 注册蓝图
  30. app.register_blueprint(abc)
  31. # 2. 注册 Flask-SQLAlchemy
  32. db.init_app(app)
  33. return app
  34. #得到了一个app
  35. #数据库-Wechatdatabase表-用户
  36. class Wechatdatabase(db.Model):
  37. __tablename__ = 'wechat_user001'
  38. id = db.Column(db.Integer,primary_key=True)
  39. openid = db.Column(db.VARCHAR(255))
  40. nickname = db.Column(db.VARCHAR(255))
  41. sex = db.Column(db.Integer)
  42. province = db.Column(db.Text)
  43. city = db.Column(db.Text)
  44. country = db.Column(db.Text)
  45. unionid = db.Column(db.VARCHAR(255))#微信uid
  46. points = db.Column(db.Integer)#现在拥有的点数
  47. success_points = db.Column(db.Integer)#成功充值点数
  48. success_times = db.Column(db.Integer)#成功充值次数
  49. success_total_fee = db.Column(db.Integer)#成功充值金额
  50. orders = db.relationship('Wechatdatabaseorder',backref='nickname2')#这个用户的订单集合
  51. #数据库-Wechatdatabaseorder表-订单
  52. class Wechatdatabaseorder(db.Model):
  53. __tablename__ = 'wechat_user_orders001'
  54. id = db.Column(db.Integer,primary_key=True)#订单id
  55. openid = db.Column(db.VARCHAR(255))
  56. nickname = db.Column(db.VARCHAR(255))
  57. unionid = db.Column(db.VARCHAR(255))
  58. out_trade_no = db.Column(db.VARCHAR(255))#订单号
  59. order_name = db.Column(db.VARCHAR(255))#订单名
  60. state = db.Column(db.VARCHAR(255))#订单状态未付款,已付款
  61. creat_time = db.Column(db.DateTime, default=datetime.now)#创建时间
  62. time_end = db.Column(db.VARCHAR(14))
  63. update_time = db.Column(db.DateTime, default=datetime.now,onupdate=datetime.now)#更新时间
  64. total_fee = db.Column(db.Integer)#订单价格
  65. spbill_create_ip = db.Column(db.VARCHAR(64))
  66. Wechatdatabase_id = db.Column(db.Integer,db.ForeignKey('wechat_user001.id'))#这个系统的下单的人id
  67. db.drop_all()
  68. db.create_all() # 创建当前应用中声明的所有模型类对应的数据表,db.drop_all()是删除表

不要的自己注释掉吧

init文件详细版,这个可以不看

baidu/app/__init__.py

  1. #flask
  2. from flask import Flask,session
  3. #数据库
  4. from flask_sqlalchemy import SQLAlchemy
  5. db = SQLAlchemy(use_native_unicode='utf8mb4')#实例化SQLAlchemy和使用编码方式
  6. from datetime import timedelta,datetime
  7. #有的蓝图
  8. from .abc import * #abc文件
  9. #os随机数
  10. import os
  11. #创建app
  12. def create_app():
  13. app = Flask(__name__,static_url_path='')
  14. #app.debug = False
  15. app.debug = True
  16. #app.secret_key = '123456789'#自定义的session秘钥
  17. # 设置配置文件,XXX是数据库名字,是表的上一层数据库名字
  18. app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:@127.0.0.1:3306/XXX?charset=utf8mb4"
  19. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  20. app.config['SQLALCHEMY_ECHO'] = True
  21. app.config["SECRET_KEY"] = os.urandom(24)
  22. app.config['WTF_CSRF_SECRET_KEY'] = 'NameError'
  23. app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=1) # 修改缓存时间,秒做单位
  24. app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(seconds=1) # 修改回话存活时间,秒做单位
  25. #session过期时间
  26. app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=6)
  27. #查看sqlalchemy执行的原始sql语句
  28. app.config['SQLALCHEMY_ECHO'] = True
  29. #微信支付1.程序id: 2.商户号id 3.商户号钥匙 4.回调链接
  30. app.config['WEIXIN_APP_ID'] = ''
  31. app.config['WEIXIN_APP_MCH_ID'] =''
  32. app.config['WEIXIN_APP_MCH_KEY'] =''
  33. app.config['WEIXIN_NOTIFY_URL'] ='artchips.art'
  34. # 注册蓝图
  35. app.register_blueprint(abc)
  36. # 2. 注册 Flask-SQLAlchemy
  37. db.init_app(app)
  38. return app
  39. #得到了一个app
  40. #数据库-Wechatdatabase表-用户
  41. class Wechatdatabase(db.Model):
  42. __tablename__ = 'wechat_user001'
  43. id = db.Column(db.Integer,primary_key=True)
  44. openid = db.Column(db.VARCHAR(255))
  45. nickname = db.Column(db.VARCHAR(255))
  46. sex = db.Column(db.Integer)
  47. province = db.Column(db.Text)
  48. city = db.Column(db.Text)
  49. country = db.Column(db.Text)
  50. unionid = db.Column(db.VARCHAR(255))#微信uid
  51. points = db.Column(db.Integer)#现在拥有的点数
  52. success_points = db.Column(db.Integer)#成功充值点数
  53. success_times = db.Column(db.Integer)#成功充值次数
  54. success_total_fee = db.Column(db.Integer)#成功充值金额
  55. orders = db.relationship('Wechatdatabaseorder',backref='nickname2')#这个用户的订单集合
  56. #数据库-Wechatdatabaseorder表-订单
  57. class Wechatdatabaseorder(db.Model):
  58. __tablename__ = 'wechat_user_orders001'
  59. id = db.Column(db.Integer,primary_key=True)#订单id
  60. openid = db.Column(db.VARCHAR(255))
  61. nickname = db.Column(db.VARCHAR(255))
  62. unionid = db.Column(db.VARCHAR(255))
  63. out_trade_no = db.Column(db.VARCHAR(255))#订单号
  64. order_name = db.Column(db.VARCHAR(255))#订单名
  65. state = db.Column(db.VARCHAR(255))#订单状态未付款,已付款
  66. creat_time = db.Column(db.DateTime, default=datetime.now)#创建时间
  67. time_end = db.Column(db.VARCHAR(14))
  68. update_time = db.Column(db.DateTime, default=datetime.now,onupdate=datetime.now)#更新时间
  69. total_fee = db.Column(db.Integer)#订单价格
  70. spbill_create_ip = db.Column(db.VARCHAR(64))
  71. Wechatdatabase_id = db.Column(db.Integer,db.ForeignKey('wechat_user001.id'))#这个系统的下单的人id
  72. db.drop_all()
  73. db.create_all() # 创建当前应用中声明的所有模型类对应的数据表,db.drop_all()是删除表

abc.py

  1. #蓝图
  2. from flask import Blueprint
  3. from flask import Flask, jsonify, request, url_for,render_template,flash,make_response
  4. #真正的数据库
  5. from app import db
  6. #导入tables类-所有表
  7. # from app.abc2 import *
  8. import re
  9. abc = Blueprint('abc',__name__)
  10. #路由1
  11. @abc.route("/", methods=['GET','POST'])
  12. def hello_flask():
  13. print("1")
  14. return "1"
  15. # 路由2
  16. @abc.route("/qqq", methods=['GET','POST'])
  17. def qqq():
  18. print("1")
  19. return "1"