Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作詳解
本文實(shí)例講述了Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作。分享給大家供大家參考,具體如下:
flask通過flash方法來顯示提示消息:
from flask import Flask, flash, render_template, request, abort
app = Flask(__name__)
app.secret_key = '520'
@app.route('/')
def index():
flash("Hello loli")
return render_template("flash.html")
flash模板:flask開放了get_flashed_messages函數(shù)給模板使用,用來得到視圖函數(shù)中的flash里的字符串(消息)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello Login</h1>
<h2>{{ get_flashed_messages()[0] }}</h2>
</body>
</html>
這里制作一個簡單的表單模擬登陸界面提示:使用request方法得到輸入表單中的數(shù)據(jù)。
@app.route('/login', methods=['POST'])
def login():
# 獲取表單
form = request.form
# 獲取表單數(shù)據(jù)
username = form.get('username')
password = form.get('password')
# 若不存在username則flash(xxx)
if not username:
flash('Please input username')
return render_template("flash.html")
if not password:
flash('Please input password')
return render_template("flash.html")
if username == "loli" and password == "520":
flash("Login success")
return render_template("flash.html")
else:
flash("username or password wrong")
return render_template('flash.html')
表單模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello Login</h1>
<form action="/login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Submit">
</form>
<h2>{{ get_flashed_messages()[0] }}</h2>
</body>
</html>

未輸入任何數(shù)據(jù)提示輸入username

未輸入密碼顯示的flash提示消息。

用戶名和密碼不符時。

登陸成功界面。
flask同樣可以自己設(shè)置404等錯誤界面:flask提供了errorhandler修飾器來設(shè)置自己的錯誤界面。
@app.errorhandler(404)
def not_found(e):
return render_template("404.html")
自己設(shè)置的簡單404錯誤模板:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>404 頁面不存在</h1> <h2>Sorry</h2> </body> </html>

也可以在正常的界面發(fā)生404錯誤時轉(zhuǎn)到這個模板裝飾:用flask import abort方法來引起一個404錯誤. 只要user_id不為520則觸發(fā)404頁面。
@app.route('/users/<user_id>')
def users(user_id):
if int(user_id) == 520:
return render_template("user.html")
else:
abort(404)
user模板:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Loli </h1> </body> </html>
源碼:
#-*- coding:utf-8 -*-
from flask import Flask, flash, render_template, request, abort
app = Flask(__name__)
app.secret_key = '520'
@app.route('/')
def index():
flash("Hello loli")
return render_template("flash.html")
@app.route('/login', methods=['POST'])
def login():
# 獲取表單
form = request.form
# 獲取表單數(shù)據(jù)
username = form.get('username')
password = form.get('password')
# 若不存在username則flash(xxx)
if not username:
flash('Please input username')
return render_template("flash.html")
if not password:
flash('Please input password')
return render_template("flash.html")
if username == "loli" and password == "520":
flash("Login success")
return render_template("flash.html")
else:
flash("username or password wrong")
return render_template('flash.html')
@app.errorhandler(404)
def not_found(e):
return render_template("404.html")
@app.route('/users/<user_id>')
def users(user_id):
if int(user_id) == 520:
return render_template("user.html")
else:
abort(404)
if __name__ == '__main__':
app.run()
希望本文所述對大家基于flask框架的Python程序設(shè)計有所幫助。
相關(guān)文章
Python使用Networkx實(shí)現(xiàn)復(fù)雜的人物關(guān)系圖
日常工作、生活中我們經(jīng)常會遇到一些復(fù)雜的事務(wù)關(guān)系,比如人物關(guān)系,那如何才能清楚直觀的看清楚這些任務(wù)關(guān)系呢?所以小編給大家介紹了Python如何使用Networkx實(shí)現(xiàn)復(fù)雜的人物關(guān)系圖,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2023-11-11
PyTorch解決ModuleNotFoundError: No module named
本文主要介紹了PyTorch解決ModuleNotFoundError: No module named ‘torch’,這個錯誤意味著我們的Python環(huán)境中沒有安裝PyTorch庫,無法正常使用其功能,下面就來具體介紹一下2024-03-03
詳談python中subprocess shell=False與shell=True的區(qū)別
這篇文章主要介紹了詳談python中subprocess shell=False與shell=True的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
python統(tǒng)計字符的個數(shù)代碼實(shí)例
在本篇文章里小編給大家整理了關(guān)于python統(tǒng)計字符的個數(shù)代碼實(shí)例內(nèi)容,需要的朋友們可以參考下。2020-02-02
python flask幾分鐘實(shí)現(xiàn)web服務(wù)的例子
今天小編就為大家分享一篇python flask幾分鐘實(shí)現(xiàn)web服務(wù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python smtplib模塊自動收發(fā)郵件功能(一)
這篇文章主要為大家詳細(xì)介紹了python smtplib模塊自動收發(fā)郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
selenium3.0+python之環(huán)境搭建的方法步驟
這篇文章主要介紹了selenium3.0+python之環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

