Flask - 請求和響應以及中間件

1、請求和響應

 1 from flask import Flask
 2     from flask import request
 3     from flask import render_template
 4     from flask import redirect
 5     from flask import make_response
 6  
 7     app = Flask(__name__)
 8  
 9  
10     @app.route('/login.html', methods=['GET', "POST"])
11     def login():
12  
13         # 請求相關信息
14         # request.method
15         # request.args
16         # request.form
17         # request.values
18         # request.cookies
19         # request.headers
20         # request.path
21         # request.full_path
22         # request.script_root
23         # request.url
24         # request.base_url
25         # request.url_root
26         # request.host_url
27         # request.host
28         # request.files
29         # obj = request.files['the_file_name']
30         # obj.save('/var/www/uploads/' + secure_filename(f.filename))
31  
32         # 響應相關信息
33         # return "字符串"
34         # return render_template('html模板路徑',**{})
35         # return redirect('/index.html')
36  
37         # response = make_response(render_template('index.html'))
38         # response是flask.wrappers.Response類型
39         # response.delete_cookie('key')
40         # response.set_cookie('key', 'value')
41         # response.headers['X-Something'] = 'A value'
42         # return response
43  
44  
45         return "內容"
46  
47     if __name__ == '__main__':
48         app.run()

 

2、flask 如何傳參數到 js中,避免& # 39等轉義

常常會有字符 空格 ' "" 等被轉義成其餘字符,這實際上是特殊字符進行轉義,防止js注入html

在js中能夠利用tojson解決。json

好比數組  num = ["ni"],通過flask的 {{num}}傳入js後,就變成了'ni'flask

解決方法數組

利用js的tojsoncookie

var myGeocode = {{ num|tojson }};app

 

3、中間件

 1 from flask import Flask, flash, redirect, render_template, request
 2   
 3 app = Flask(__name__)
 4 app.secret_key = 'some_secret'
 5   
 6 @app.route('/')
 7 def index1():
 8     return render_template('index.html')
 9   
10 @app.route('/set')
11 def index2():
12     v = request.args.get('p')
13     flash(v)
14     return 'ok'
15   
16 class MiddleWare:
17     def __init__(self,wsgi_app):
18         self.wsgi_app = wsgi_app
19   
20     def __call__(self, *args, **kwargs):
21   
22         return self.wsgi_app(*args, **kwargs)
23   
24 if __name__ == "__main__":
25     app.wsgi_app = MiddleWare(app.wsgi_app)
26     app.run(port=9999)
相關文章
相關標籤/搜索