一 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

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