1.对于post方法与get方法采用不同的响应
以官方文档demo为例
1 @app.route('/login', methods=['GET', 'POST']) 2 def login(): 3 if request.method == 'POST': 4 session['username'] = request.form['username'] 5 return redirect(url_for('index')) 6 return ''' 7 <form action="" method="post"> 8 <p><input type=text name=username> 9 <p><input type=submit value=Login> 10 </form> 11 '''
如果是get方法,则返回登陆表单
如果是post方法,则记录会话内容并重定向到index
2.重定向与错误
1 from flask import abort, redirect, url_for 2 3 @app.route('/') 4 def index(): 5 return redirect(url_for('login')) 6 7 @app.route('/login') 8 def login(): 9 abort(401) 10 this_is_never_executed()
通过abort可以直接返回客户端一个指定的响应码,redirect则返回302,并附上重定向后的url地址
3.请求对象
用户的request请求被处理成一个对象,从flask中导入request后可以直接调用request查看请求中的属性,内容非常多
1 def printrequest(): 2 print(request.accept_charsets) 3 print(request.accept_encodings) 4 print(request.accept_languages) 5 print(request.accept_mimetypes) 6 print(request.access_route) 7 print(request.application) 8 print(request.args) 9 print(request.authorization) 10 print(request.base_url) 11 print(request.blueprint) 12 print(request.cache_control) 13 print(request.charset) 14 print(request.close) 15 print(request.content_encoding) 16 print(request.content_length) 17 print(request.content_md5) 18 print(request.content_type) 19 print(request.cookies) 20 print(request.data) 21 print(request.date) 22 print(request.dict_storage_class) 23 print(request.disable_data_descriptor) 24 print(request.encoding_errors) 25 print(request.endpoint) 26 print(request.environ) 27 print(request.files) 28 print(request.form) 29 print(request.form_data_parser_class) 30 print(request.from_values) 31 print(request.full_path) 32 print(request.get_data) 33 print(request.get_json) 34 print(request.headers) 35 print(request.host) 36 print(request.host_url) 37 print(request.if_match) 38 print(request.if_modified_since) 39 print(request.if_none_match) 40 print(request.if_range) 41 print(request.if_unmodified_since) 42 print(request.input_stream) 43 print(request.is_json) 44 print(request.is_multiprocess) 45 print(request.is_multithread) 46 print(request.is_run_once) 47 print(request.is_secure) 48 print(request.is_xhr) 49 print(request.json) 50 print(request.list_storage_class) 51 print(request.make_form_data_parser) 52 print(request.max_content_length) 53 print(request.max_form_memory_size) 54 print(request.max_forwards) 55 print(request.method) 56 print(request.mimetype) 57 print(request.mimetype_params) 58 print(request.on_json_loading_failed) 59 print(request.parameter_storage_class) 60 print(request.path) 61 print(request.pragma) 62 print(request.query_string) 63 print(request.range) 64 print(request.referrer) 65 print(request.remote_addr) 66 print(request.remote_user) 67 print(request.routing_exception) 68 print(request.scheme) 69 print(request.script_root) 70 print(request.shallow) 71 print(request.stream) 72 print(request.trusted_hosts) 73 print(request.url) 74 print(request.url_charset) 75 print(request.url_root) 76 print(request.url_rule) 77 print(request.user_agent) 78 print(request.values) 79 print(request.view_args) 80 print(request.want_form_data_parsed)