Flask小程序订餐系统

Flask安装

  • 第一个flask项目
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


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

路由

*1. 路由的第一种实现方法:


@app.route('/api')
def hello():
    return 'Hello'


@app.route('/api/hello')
def hello_hello():
    return 'hello_hello'

2.蓝牙方式:

  • 第一步:新建一个文件imooc.py,在这里面管理所有的路由
# -*- coding: utf-8 -*-
# @Time    : 2021/7/16 10:03
# @Author  : Yang
# @Email   : 2635681517@qq.com
# @File    : imooc.py
# @Software: PyCharm
from flask import Blueprint

route_imooc = Blueprint("imooc_page", __name__)


@route_imooc.route("/")
def index():
    return 'imooc index page'


@route_imooc.route("/hello")
def hello():
    return 'imooc hello page'


@route_imooc.route('/api/hello')
def hello_hello():
    return 'hello_hello'

  • 第二步 在app.py中把刚才第一步的route_imooc给注册进来即可,接着启动服务直接访问http://127.0.0.1:5000/imooc/api/hello
app.register_blueprint(route_imooc, url_prefix='/imooc')
  • http://127.0.0.1:5000/imooc/api/hello 对这个url进行解释:imooc是一个统一的前缀即执行过程是先到app.py中找地址然后类似重定向到imooc.py中继续进行url的拼接。

链接管理器url_for

  • url_for链接管理器
    在这里插入图片描述
  • 版本管理:
    • 第一步:在更目录下创建一个UrlManager类
class UrlManager(object):
    @staticmethod
    def buildUrl(path):
        return path

    @staticmethod
    def buildStaticUrl(path):
        path = path+"?ver"+"20210716021038"
        return UrlManager.buildUrl(path)
  • 第二步:
    • 在app.py文件中进行调用
@app.route('/')
def hello_world():
    url = url_for("index")
    url_1 = UrlManager.buildUrl("/api")
    url_2 = UrlManager.buildStaticUrl("/css/bootstrap")
    return 'Hello World!url{0},url_1:{1},url_2:{2}'.format(url, url_1,url_2)

访问地址http://127.0.0.1:5000/ 结果如下
Hello World!url/aoi,url_1:/api,url_2:/css/bootstrap?ver20210716021038

日志系统

app.logger.debug('A value for debugging')
app.logger.warning('A warning occurred (%d apples)', 42)
app.logger.error('An error occurred')

错误处理

  • 在app.py中加入,第一个是404页面处理,第二个是数据库(mysql)的错误处理
@app.errorhandler(404)
def page_not_found(error):
    app.logger.error(error)
    return 'This page does not exist', 404


@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500

数据库ORM(Flask链接数据库mysql)

-  flask链接数据库
    *  第一步:先安装两个库
pip install Flask-SQLAlchemy
pip install mysqlclient
   * 第二步:创建config.py文件,文件内容为:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:你的密码@ip地址或者本机local host:3306/你的数据库名'
SQLALCHEMY_TRACK_MODIFICATIONS = True
	* 第三步: 在测试类(或者app.py)中进行编写测试代码:
from flask_sqlalchemy import SQLAlchemy
app.config.from_object('common.config')
db = SQLAlchemy(app, use_native_unicode='utf8')
@app.route('/aoi')
def index():
    from sqlalchemy import text
    sql = text("select * from user")
    result = db.engine.execute(sql)
    for row in result:
        print(row)
        app.logger.info(row)
    return 'Hello index!'
    访问地址:http://127.0.0.1:5000/aoi即可

问题:ModuleNotFoundError: No module named 'flask._compat
原因:flask2.0版本过高
解决办法:pip3 install flask==1.1.2

搭建基本的flask的mvc框架

第一阶段

  • 基本结构图
    在这里插入图片描述
  • application.py文件内容
from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
import os
"""
通过定义Application方法封装数据(mysql、全局变量,还有通过flask_script进行Manager的搭建)
"""
class Application(Flask):
    def __init__(self, import_name):
        super(Application, self).__init__(import_name)
        # 开始加载配置文件ops_config 是运行时传入的数据 接下来进行数据的拼接
        self.config.from_pyfile('config/base_setting.py')
        if "ops_config" in os.environ:
            self.config.from_pyfile('config/%s_setting.py' % os.environ['ops_config'])
        db.init_app(self)
db = SQLAlchemy()
app = Application(__name__)
manager = Manager(app)
  • manager.py文件内容
import sys
from application import app, manager
from flask_script import Server
import traceback
import www  # 引入www
# host=app.config['SERVER_IP'],
# # 配置manager自定义命令host和port,通过配置文件读取相应的数据
manager.add_command("runserver", Server(host=app.config['SERVER_IP'], port=app.config['SERVER_PORT'], use_debugger=True,
                                        use_reloader=True))
def main():
 # 这里用封装好的mananger进行run方法的调用
    manager.run()
if __name__ == '__main__':
    try:
        sys.exit(main())
    except Exception as e:
        traceback.print_exc()
  • base_setting.py文件内容,配置一些基础的内容端口,ip,是否开启调试模式
SERVER_PORT = '8999'
SERVER_IP = '0.0.0.0'
DEBUG = False
SQLALCHEMY_ECHO = False
  • local_setting.py文件内容,里面定义了数据库(mysql)的链接过程等等内容,这个文件是开发时调用的
SQLALCHEMY_ECHO = True
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:你的数据库密码@ip地址:3306/mydb'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_ENCODING = 'utf8mb4'
SQLALCHEMY_COMMIT_TEARDOWN = True
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值