做个俗人,浪荡一生干净自由

做个俗人,知世俗,而不俗

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)

 

posted @ 2018-06-23 17:32  折花载酒少年事`  阅读(1340)  评论(0编辑  收藏  举报