一 flask 介绍 二

10 File Uploads

案例:
<form action="/upload" method="post">
上传<input name='uploadfile' type="file">
<Br/>
<input type="submit" value="Submit" />
</form>

@app.route('/upload',methods=['GET','POST'])
def upload():
if request.method == 'POST':
f = request.files['uploadfile']
f.save('test')
return 'uploaded'
else:
return render_template('upload.html')

报错:
flask.debughelpers.DebugFilesKeyError:
原因:
默认"application/x-www-form-urlencoded" ,不传输文件内容
方案:
form 中添加enctype="multipart/form-data"

### 11 Cookies
在response中设置cookie
@app.route('/')

@app.route('/index',methods=['GET','POST'])
def index():
user = ''
if request.method == 'POST':
user = request.form['user']
return render_template('index.html',user=user)
else:
resp = make_response(render_template('index.html',user=user))
resp.set_cookie('key','value') #设置cookie
return resp

@app.route('/login')
def login():
print(request.cookies.get('key')) #获取cookie
return render_template('login.html')

12 Redirects and Errors

redirect: 将用户请求redirect 到another endpoint
abort: abort请求,返回一个错误代码

@app.route('/')br/>@app.route('/index',methods=['GET','POST'])
def index():
user = ''
if request.method == 'POST':
user = request.form['user']
return render_template('index.html',user=user)
else:
return redirect(url_for('login')) # 重定向,直接指向abort(401)

@app.route('/login')
def login():
abort(401) #放弃请求,返回401 错误
print('key')

定制error 网页:
使用errorhandler() 装饰函数br/>@app.errorhandler(404)
def page_not_found(error):
return render_template('page_not_found.html'),404 #注意404,否则默认返回200

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章