Flask framework
Jinja2 template-based services and werkzeug wsgi miniature frame
About werkzeug
werkzeug is a wsgi toolkit, he can serve as a web framework underlying library, werkzeug not a web server, nor is it a web framework, but rather a tool kit, the official said wsgi is a toolkit that can be used as a web underlying library framework, because he encapsulated a lot of good things web frameworks, such as Request, Response, and so on.
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)
Start flask
Essentially perform 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 four swordsman -> flask four swordsman
"""
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 profiles four ways
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 routing nature
In fact, the implementation of app.add_url_rule (self, rule, endpoint = None, view_func = None)
rule -> Routing
endpoint -> reverse lookup alias
view_func -> Current view function
methods -> embodiment allows requests [ 'get', 'post'], if the default value is not pass get request
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()