from flask import request
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == 'POST':
if valid_login(request.form['username'],
request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
# 当请求形式为“GET”或者认证失败则执行以下代码
return render_template('login.html', error=error)
searchword = request.args.get('key', '')
from flask import request
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('/var/www/uploads/uploaded_file.txt')
...
from flask import request
from werkzeug import secure_filename
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('/var/www/uploads/' + secure_filename(f.filename))
...
from flask import request
@app.route('/')
def index():
username = request.cookies.get('username')
# 注意这里引用cookies字典的键值对是使用cookies.get(key)
# 而不是cookies[key],这是防止该字典不存在时报错"keyerror"
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
如果想在没有请求的情况下获取上下文,可以使用test_request_context()
或者request_context()
,从request
对象的form
中可以获取表单的数据,args
中可以获取 URL 中的参数,files
可以获取上传的文件,cookies
可以操作cookie
。
import os
from flask import Flask, request
from werkzeug import secure_filename # 获取上传文件的文件名
UPLOAD_FOLDER = '/home/shiyanlou/Code' # 上传路径
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) # 允许上传的文件类型
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def allowed_file(filename): # 验证上传的文件名是否符合要求,文件名必须带点并且符合允许上传的文件类型要求,两者都满足则返回 true
return '.' in filename and \
filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST': # 如果是 POST 请求方式
file = request.files['file'] # 获取上传的文件
if file and allowed_file(file.filename): # 如果文件存在并且符合要求则为 true
filename = secure_filename(file.filename) # 获取上传文件的文件名
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) # 保存文件
return '{} upload successed!'.format(filename) # 返回保存成功的信息
# 使用 GET 方式请求页面时或是上传文件失败时返回上传文件的表单页面
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
'''