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


一、請求和響應

 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()

 

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

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

在js中可以利用tojson解決。

比如數組  num = ["ni"],經過flask的 {{num}}傳入js后,就變成了'ni'

解決方法

利用js的tojson

var myGeocode = {{ num|tojson }};

 

三、中間件

 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM