• 初步Flask框架


    快速使用flask

    第一步首先下载Flask模块

    第一个模块程序

    #引用 Flask模块
    from flask import Flask
    # 创建flask对象
    app = Flask(__name__)
    
    #生成url 为index
    @app.route('/index')
    def index():
        #页面返回hello world
        return 'hello world'
    
    #使用main函数
    if __name__ == '__main__':
        #使用app.run开启程序
        app.run()
    
    

    总结:

    • flask框架是基于werkzeug的wsgi实现,flask自己没有wsgi。
    • 用户请求一旦到来,就会之 app.__call__ 方法 。
    • 写flaks标准流程
    • flask的session是保存在:加密的形式保存在浏览器的cookie上。

    Flask设置___________

    Flask路由请求

    @app.route('/login',methods=['GET','POST'])
    def login():
    	pass
    #动态路由
    @app.route('/login/<name>') 
    def login(name):
        print(type(name))
        return render_template('login.html')
    
    #支持正则表达式的路由
    from flask import Flask,render_template
    app = Flask(__name__)
    from werkzeug.routing import BaseConverter 
    class RegConverter(BaseConverter):
        def __init__(self, map, regex):
            super().__init__(map)
            self.regex = regex
    app.url_map.converters['regex'] = RegConverter
    @app.route('/index/<regex("d+"):x1>') 
    def index(x1):    
    return render_template('index.html')
    if __name__ == '__main__':
         app.run()
    
    

    视图

    FBV视图路由的两种写法

    def index():
        return render_template('index.html') 
    app.add_url_rule('/index', 'index', index)
    
    # 公司里一般用这种方式 
    @app.route('/login') 
    def login():
        return render_template('login.html')
    
    

    CBV视图的两种写法

    from flask import Flask,render_template,views
    app = Flask(__name__,)
    def test1(func):
        def inner(*args,**kwargs):
            print('before1')
            result = func(*args,**kwargs)
            print('after1')
            return result
        return inner
    def test2(func):
        def inner(*args,**kwargs):
            print('before2')
            result = func(*args,**kwargs)
            print('after2')
            return result
        return inner
    
    class UserView(views.MethodView):
        methods = ['GET',"POST"]
        decorators = [test1,test2]
        def get(self):
            print('get')
            return 'get'
        def post(self):
            print('post')
            return 'post'
    app.add_url_rule('/user', view_func=UserView.as_view('user')) # endpoint
    if __name__ == '__main__':
        app.run()
    

    路由加载的源码流程

    • 将url和函数打包成为 rule 对象
    • 将rule对象添加到map对象中。
    • app.url_map = map对象

    路由的参数

    @app.route('/login',methods=['GET','POST'],endpoint="login")
    def login():
    	pass
    	
    # 注意:endpoint不能重名
    

    获取提交的数据

    from flask import request
    
    @app.route('/index')
    def login():
    	request.args # GET形式传递的参数
    	request.form # POST形式提交的参数
    

    返回数据

    @app.route('/index')
    def login():
    	return render_template('模板文件')
    	return jsonify()
    	reutrn redirect('/index/') # reutrn redirect(url_for('idx'))
    	return "...."
    

    wsgi 找源码的流程

    from werkzeug.serving import run_simple 
    from werkzeug.wrappers import BaseResponse
    def func(environ, start_response):
        print('请求来了')    
        response = BaseResponse('Hello Word')    
        return response(environ, start_response)
    if __name__ == '__main__':   
        run_simple('127.0.0.1', 5000, func)
    

    wsgi静态文件的处理以及全局变量

    from flask import Flask
    app = Flask(__name__,template_folder="html_路径",static_folder="静态文件夹的名字",static_url_path="静态文件路径")
    app.config.from_object('加载的配置文件_例子______config.settings')
    @app.route('/index') def index():
        return 'hello world'
    if __name__ == '__main__':
        app.run()
    
  • 相关阅读:
    Kubernetes 部署Mysql 主从复制集群
    Kubernetes Kube-proxy
    vRO Extend VirtualDisk Workflow
    Kubernetes Horizontal Pod Autoscaler
    vRO 7 添加RestHost证书报错
    Kubernetes Resource Qoutas
    Kubernetes 命令补全
    Kubernetes 部署Weave Scope监控
    Kubernetes Yaml
    Go reflect反射
  • 原文地址:https://www.cnblogs.com/SkyRabbit/p/11930044.html
Copyright © 2020-2023  润新知