Flask框架 基于jinja2模板和werkzeug wsgi服务微型框架 werkzeug简介 werkzeug是一个wsgi工具包,他可以作为一个web框架的底层库,werkzeug不是一个web服务器,也不是一个web框架,而是一个工具包,
Flask框架
基于jinja2模板和werkzeug wsgi服务微型框架
werkzeug简介
werkzeug是一个wsgi工具包,他可以作为一个web框架的底层库,werkzeug不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个wsgi工具包,它可以作为一个web框架的底层库,因为他封装好了很多web框架的东西,例如Request, Response等等。
from werkzeug.wrappers import Request, Response @Request.application def hello(request): return Response('Hello world!') if __name__=='__main__': from werkzeug.serving import run_simple run_simple('localhost', 4000, hello)
启动flask
本质是执行wsgi_app()
from flask import Flask # 导入flask app=Flask(__name__) # 实例化Flask对象 @app.route('/index') # 加路由 def index(): return '123' @app.route('/login') def login(): return '我的登录' if __name__ == '__main__': app.run() # 启动flask,执行wsgi_app()
django四剑客-->flask四剑客
""" django flask redirect-->redirect render-->render_template # 传值字典要**打散 HttpResponse-->HttpResponse JsonResponse-->jsonify """ from flask import Flask,redirect,render_template,jsonify app=Flask(__name__) @app.route('/index') def index(): return redirect('/login') @app.route("/test") def test(): data={"name":"ada","age":30} return render_template("index.html",**data) @app.route("/login") def login(): data = {"name": "ada", "age": 30} return jsonify(data) if __name__ == '__main__': app.run()
flask配置文件四种方式
from flask import Flask app=Flask(__name__) # 第一种方式 app.debug=True app.secret_key='asdas' # 第二种方式 app.config['DEBUG']=True # 第三种方式 app.config.from_pyfile('settings.py') # settings.py文件 DEBUG=True # 第四种方式(推荐) app.config.from_object('settingss.Test') # settingss.py文件 class Test: DEBUG=True
flask路由本质
其实是执行 app.add_url_rule(self, rule, endpoint=None, view_func=None)
rule-->路由
endpoint-->反向解析的别名
view_func-->当前的视图函数
methods-->允许请求的方式[‘get‘,‘post‘],如果不传值默认是get请求
from flask import Flask,url_for,redirect app=Flask(__name__) # 第一种装饰器路由 @app.route('/',endpoint='n1') # endpoint取别名,方便重定向跳转指定函数,不写默认是函数名 def index(): return 'ok' # 第二种路由 app.add_url_rule('/',view_func=index) # 注释@app.route('/',endpoint='n1')之后,使用app.add_url_rule('/',view_func=index)指向index函数 @app.route('/login',methods=['get','post']) def login(): print(url_for('n1')) return redirect(url_for('n1')) if __name__ == '__main__': app.run()