访问请求数据
1.请求对象
通过get和post方法,接受用户的请求信息。
WSGI服务器转发的http请求数据,Flask框架会将其封装为一个Request类的实例。Request实例对象中包含 了关于一次HTTP请求的一切信息,常用的属性包括:
-
form - 记录请求中的表单数据。类型:MultiDict
-
args - 记录请求中的查询参数。类型:MultiDict
-
cookies - 记录请求中的cookie。类型:Dict
-
headers - 记录请求中的报文头。类型:EnvironHeaders
-
method - 记录请求使用的HTTP方法:GET/POST/PUT....。类型:string
-
environ - 记录WSGI服务器转发的环境变量。类型:Dict
-
url - 记录请求的URL地址。类型:string
from flask import request,render_template,redirect,url_for from werkzeug import secure_filename from myapp import app import os UPLOAD_FOLDER = 'tmp/' app.config['UPLOAD_FOLDER']=UPLOAD_FOLDER @app.route('/upload',methods=['GET','POST']) def upload(): if request.method=='POST': f=request.files['file'] filename=secure_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_FOLDER'],filename)) return redirect(url_for('index')) return render_template('upload.html') @app.route('/index') def index(): return render_template('index.html')
2.重定向和错误
你可以用 redirect() 函数把用户重定向到其它地方。放弃请求并返回错误代码,用abort() 函数。
如果你要定制错误页面, 可以使用errorhandler() 装饰器:
from flask import render_template
@app.errorhandler(404) def page_not_found(error): return render_template('page_not_found.html'), 404
ps:注意 render_template() 调用之后的 404 。这告诉 Flask,该页的错误代码是 404 ,即没有找到。默认为 200,也就是一切正常。
3.响应对象:
视图函数的返回值会被自动转换为一个响应对象。Flask 把返回值转换为响应对象的逻辑是这样:
- 如果返回的是一个合法的响应对象,它会从视图直接返回。
- 如果返回的是一个字符串,响应对象会用字符串数据和默认参数创建。
- 如果返回的是一个元组,且元组中的元素可以提供额外的信息。这样的元组必须是(response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。
- 如果上述条件均不满足, Flask 会假设返回值是一个合法的 WSGI 应用程序,并转换为一个请求对象。
如果你想在视图里操纵上述步骤结果的响应对象,可以使用 make_response() 函数。
@app.errorhandler(404) def not_found(error): resp = make_response(render_template('error.html'), 404) resp.headers['X-Something'] = 'A value' return resp
4.会话
除请求对象之外,还有一个 session 对象。它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名。这意味着用户可以查看你 Cookie 的内容,但却不能修改它,除非用户知道签名的密钥。
from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) #首页判断session是否存在username @app.route('/') def index(): if 'username' in session: return 'Logged in as %s' % escape(session['username']) return 'You are not logged in' #保存用户名到session @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> ''' #移除session里username @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('index')) # 保存密钥 app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
- Flask -- 访问请求数据
- 错误摘要HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
- 如何避免程序池回收导致当前访问数据重新请求或者 数据清除的情况?【提问】
- 访问Web,tcp传输全过程(三次握手、请求、数据传输、四次挥手)
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”
- 光脚丫学ASP.NET MVC(0010):通过操作参数更快捷访问请求数据
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效
- IIS7.5 HTTP 错误500.19-Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效
- PHP入门之局域网多站点访问、带参数请求、Json数据、Xml数据
- session_write_close() PHP在访问Session数据时存在互斥情况,导致Ajax请求响应缓慢
- python web开发-flask中访问请求数据request
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。
- HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。