熟悉Flask框架------第二天(访问请求数据、Cookies、Session、重定向、关于响应)
2017-11-24 00:00
691 查看
摘要: 基本算是Python入门完成之后,
Flask又向前跨了一大步,
加油加油,下一步,先写一个简单的登录,
vue+flask-----------------------------------------------------------------------------------------------------成长的路上我会越来越好。
http://docs.jinkan.org/docs/flask/quickstart.html
2)存储Cookies
使用errorHandler()定制错误页面
(1)一个合法的响应对象,从视图直接返回
(2)一个字符串,响应对象会用字符串数据和默认参数创建
(3)一个元组,(response, status, headers)
(4).(1)(2)(3)不合适的时候,Flask假设返回值是一个合法的WSGI应用程序,并转换为一个请求对象
通常会在请求结束时记录信息,并在下一个请求中访问记录的信息,展现信息通常要结合模板布局
flash()可以闪现一条消息
get_flashed_messages()可以操作消息本身
Flask又向前跨了一大步,
加油加油,下一步,先写一个简单的登录,
vue+flask-----------------------------------------------------------------------------------------------------成长的路上我会越来越好。
http://docs.jinkan.org/docs/flask/quickstart.html
6.访问请求数据
对于Web应用,在Flask中由全局的request对象提供与客户端发送给服务器的数据交互信息(1)环境局部变量~~~~~~~~~跳过
(2)请求对象
from flask import request # 从flask模块里导入它
# -*- coding: utf-8 -*- from flask import Flask, render_template, request app = Flask(__name__) @app.route('/login', methods=['POST', 'GET']) def login(): error = None if request.method == 'POST': if request.form['username'] != '': return request.form['username'] else: error = 'Invalid username/password' # the code below is executed if the request method # was GET or the credentials were invalid return render_template('login.html', error=error) if __name__ == '__main__': app.run(debug=True)
(3)文件上传
# -*- coding: utf-8 -*- from flask import Flask, request from werkzeug import secure_filename # 不知道为啥这里报错 app = Flask(__name__) @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': f = request.files['the_file'] f.save('./files/' + secure_filename(f.filename)) if __name__ == '__main__': app.run(debug=True)
(4)Cookies
1)读取Cookies# -*- coding: utf-8 -*- from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): username = request.cookies.get('username') # 获取Cookies return username if __name__ == '__main__': app.run(debug=True)
2)存储Cookies
# -*- coding: utf-8 -*- from flask import Flask, request, make_response, render_template app = Flask(__name__) @app.route('/') def index(): resp = make_response(render_template('login.html')) resp.set_cookie('username', 'the username') # 设置Cookies return resp if __name__ == '__main__': app.run(debug=True)
7.重定向和错误
(1)重定向:用redirect()函数把用户重定向到其他地方
# -*- coding: utf-8 -*- from flask import Flask, request, make_response, render_template, abort, redirect, url_for app = Flask(__name__) @app.route('/') def index(): return redirect(url_for('login')) # http://127.0.0.1:5000/---------->http://127.0.0.1:5000/login @app.route('/login') def login(): return "hello world" if __name__ == '__main__': app.run(debug=True)
(2)错误:用abort()函数放弃请求并返回错误代码
返回Not Found# -*- coding: utf-8 -*- from flask import Flask, request, make_response, render_template, abort, redirect, url_for app = Flask(__name__) @app.route('/') def index(): return redirect(url_for('login')) # http://127.0.0.1:5000/---------->http://127.0.0.1:5000/login @app.route('/login') def login(): abort(404) if __name__ == '__main__': app.run(debug=True)
使用errorHandler()定制错误页面
# -*- coding: utf-8 -*- from flask import Flask, request, make_response, render_template, abort, redirect, url_for app = Flask(__name__) @app.route('/') def index(): return redirect(url_for('login')) # http://127.0.0.1:5000/---------->http://127.0.0.1:5000/login @app.route('/login') @app.errorhandler(404) # 使用errorHandler()定制错误页面 def login(): return render_template('error.html'), 404 if __name__ == '__main__': app.run(debug=True)
8.关于响应
Flask把返回值转换为响应对象的逻辑:(1)一个合法的响应对象,从视图直接返回
(2)一个字符串,响应对象会用字符串数据和默认参数创建
(3)一个元组,(response, status, headers)
(4).(1)(2)(3)不合适的时候,Flask假设返回值是一个合法的WSGI应用程序,并转换为一个请求对象
# -*- coding: utf-8 -*- from flask import Flask, request, make_response, render_template, abort, redirect, url_for app = Flask(__name__) @app.errorhandler(404) def not_found(error): resp = make_response(render_template('error.html'), 404) resp.headers['X-Something'] = 'A value' return resp if __name__ == '__main__': app.run(debug=True)
9.会话:session对象
# -*- coding: utf-8 -*- from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) # 一开始访问http://127.0.0.1:5000/,页面上显示You are not logged in @app.route('/') def index(): if 'username' in session: return 'Logged in as %s' % escape(session['username']) return 'You are not logged in' # 访问http://127.0.0.1:5000/login,输入yj,点击Login按钮,登录成功,页面跳转到index页面//127.0.0.1:5000/,页面显示Logged in as @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': session['username'] = request.form['username'] return redirect(url_for('index')) return ''' <form action="" method="post"> <p><input type=text name=username> <p><input type=submit value=Login> </form> ''' # 访问http://127.0.0.1:5000/logout,页面跳转到index页面,页面显示You are not logged in @app.route('/logout') def logout(): # remove the username from the session if it's there session.pop('username', None) return redirect(url_for('index')) # set the secret key. keep this really secret: app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' if __name__ == '__main__': app.run(debug=True)
10.消息闪现
简单地给用户反馈通常会在请求结束时记录信息,并在下一个请求中访问记录的信息,展现信息通常要结合模板布局
flash()可以闪现一条消息
get_flashed_messages()可以操作消息本身
相关文章推荐
- session_write_close() PHP在访问Session数据时存在互斥情况,导致Ajax请求响应缓慢
- 关于Python对简单的web框架flask的应用使得不只是本机而是局域网都能访问
- AFNetworking框架的基本使用——GET、POST登录 、设置请求与响应的数据格式
- Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据
- 记录问题:登录session过期,ajax请求被web security拦截,页面没有数据且没有重定向到login页面
- Flask 使用重定向作为POST请求的响应
- 关于url请求和json数据的响应的理解和接口的压力测试
- Response就是响应服务起器对浏览器请求的文件或数据,可以重定向,发送给浏览器,设置cookie
- python web开发-flask中访问请求数据request
- Flask框架——请求、应答与会话 :Request/Response/Session
- 关于HTTP请求时 请求头中带Expect:100-continue POST数据无响应问题
- Flask中的session重定向以后,数据会被清空吗
- 使用C#访问百度指数:分析请求/响应数据(1)
- Flask -- 访问请求数据
- 使用C#访问百度指数:模拟发送请求/得到响应数据(2)
- 关于android客户端访问网络数据的问题
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- 请求转发与响应重定向
- JavaWeb_Day10_学习笔记1_response(3、4、5、6、7、8、9)发送状态码、响应、重定向、定时刷新、禁用浏览器缓存、响应字节数据、快捷重定向方法、完成防盗链
- EntityFramework6写的数据访问框架之二BaseDAL