轻松入门Web后端框架-Flask

2023-05-27 0 979

写作责任编辑约须要5两分钟

Flask 是两个 Python 同时实现的 Web 合作开发微构架。Flask 倚赖两个内部库:Jinja2 模版发动机和 Werkzeug WSGI 开发工具。

Flask不但在Web后端合作开发、微服务项目合作开发,同时在ERP控制系统合作开发、APIUSB合作开发等应用领域,应用应用领域都十分广为。

轻松入门Web后端框架-Flask

为何要采用构架?

常常合作开发两个应用应用领域(Web应用应用领域、控制系统应用应用领域)跟修建新房子的操作过程那样,须要先打墙体,搭好金属结构,接着几块砖几块砖叠上来。而合作开发两个应用应用领域呢,反之亦然也须要两个好的体系结构,资料库可视化,接着两个组件两个组件采用标识符同时实现。

如果合作开发两个应用软件应用领域不采用构架,和我们建新房子时,每几块砖、每两根混凝土都须要他们制造出来其本质上是那样的。

而采用构架能增添许多益处,比如说提高合作开发工作效率、让应用应用领域合作开发更为规范化、开拓性更强,让开发人员把更多的心力放到销售业务方法论的同时实现上,而不是放到多次重复、繁杂的此基础自然环境上(比如说Web服务项目器、下层同时实现等)

Flask缺点

Flask民主自由、灵巧,扩展性强,服务器端库的优先选择范围广,合作开发时能紧密结合他们最喜欢用的车轮,也能紧密结合最盛行最强悍的Python库

进阶单纯,即使没有啥web合作开发实战经验,也能迅速作出中文网站,十分适用于于较小型中文网站,适用于合作开发web服务项目的API

合作开发小型中文网站无阻力,但标识符构架须要他们结构设计,合作投资成本依赖于合作开发人员的潜能和实战经验

各方面性能均等于或优于Django

Flask与关系型资料库的配合采用不弱于Django,而其与NoSQL资料库的配合远远优于Django

本地web服务项目启动

app = Flask(__name__)

if __name__ == __main__

:

    app.run(debug=True, host=“0.0.0.0”, port=5000, threaded=True

)

    # 其中app为Flask实例对象,__name__代表的是当前组件本身的名称

Token鉴权

# before_request所有请求过来后都要执行的,通过token能对USB进行权限控制@app.before_requestdef dashboard_verify():    dashboard_url = app.config[DASHBOARD_URL

]

    api_key = app.config[API_KEY

]

    session_id = request.cookies.get(_AJSESSIONID

)

username = request.cookies.get(username

)

    if username == “xxxx”

:

        return None    if username == “xxxx”

:

        endpoint = request.endpoint

interface_allow = is_in_scope(endpoint)

        if interface_allow is True

:

            return None        else

:

            return jsonify({“status”: -1, “data”: “用户没有该USB权限”})

注册路由

Blueprint 是两个存储视图方法的容器,这些操作在这个Blueprint 被注册到两个应用应用领域之后就能被调用,Flask 能通过Blueprint来组织URL以及处理请求

Flask采用Blueprint让应用应用领域同时实现组件化

两个项目能具有多个Blueprint,能将两个Blueprint注册到任何两个未采用的URL下比如说 “/”、“/sample”或者子域名

蓝图是保存了一组将来能在应用应用领域对象上执行的操作,注册路由就是一种操作

当在app对象上调用 route 装饰器注册路由时,这个操作将修改对象的url_map路由表

然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的两个延迟操作记录列表defered_functions中添加了两个项

当执行app对象的 register_blueprint() 方法时,应用应用领域对象将从蓝图对象的 defered_functions 列表中取出每一项,并以自身作为参数执行该匿名函数,即调用应用应用领域对象的 add_url_rule() 方法,这将真正的修改应用应用领域对象的usr_map路由表

from mirror.views.device_manager import

 device_manager_bp

# 注册路由app.register_blueprint(device_manager_bp)

页面跳转

通过@app.route(/)指定跳转的页面,通过定义方法同时实现页面内的数据处理,将处理后的页面return传递至前端浏览器中展示内容,视图函数必须有返回内容

route()注明访问当前函数须要采用的URL;

@app.route(/

)

def index()

:

    index_page = fundation_Form()

    return render_template(index.html, form=index_page)

前后端参数传递

keyword为标签的name

通过method来指定请求的方式。如:method=post

POST请求:data = request.get_json()

@app.route(/mirror/automation/baselines, methods=[POST])def update_automation_baseline():

data = request.get_json()

    casename = data[casename]

GET请求:keyword = request.args.get(keyword)

@app.route(/mirror/automation/reasons, methods=[GET])def get_automation_reasons():    date = request.args.get(date)

资料库连接

MySQL连接

class Config(object):    “””配置参数”””    # 设置连接资料库的URL    app.config[SQLALCHEMY_DATABASE_URI] = mysql://%s:%s@%s:%s/%s

 % (USER, PASSWORD, HOST, PORT, DB)

    # 设置sqlalchemy自动更跟踪资料库    SQLALCHEMY_TRACK_MODIFICATIONS = True    # 查询时会显示原始SQL语句    app.config[SQLALCHEMY_ECHO] = True    # 禁止自动提交数据处理    app.config[SQLALCHEMY_COMMIT_ON_TEARDOWN] =False    app.config[SQLALCHEMY_POOL_RECYCLE] = 400

MongoDB连接

import

 pymongo

class Mongodb:    def __init__(self):        self.Mongo_client = pymongo.MongoClient(config.mongodb_uri, replicaSet=“xxx”

)

self.mobile_autotest = self.Mongo_client.mobileautotest

self.mobile_autotest.authenticate(name=config.mongodb_user, password=config.mongodb_password)

总结

如果你想搞懂Python web合作开发WSGI协议原理以及同时实现操作过程、或者你想灵巧定制组件,完全DIY你的应用应用领域、想同时实现微服务项目,那么建议你优先选择Flask。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务