1. 程式人生 > >Flask------訊息提示與異常處理

Flask------訊息提示與異常處理

“”" 目標: 如何給html頁面傳遞變數? render_templates(“xxx.html”, message =“xxxxx”, code=“xxx”) 如何顯示給html傳遞的變數? {{ message }} # 404異常處理函式;@app.errorhandler(404)

# 丟擲異常: abort

“”"

from flask import Flask, request, render_template, redirect, flash, abort

app = Flask(__name__)
users = {
    'root': 'redhat',
    'westos': 'westos'
}


# 路由: http://ip:port
@app.route('/')
def index():
    return render_template('index.html')


# 需要用到POST方法;
# 通過route裝飾器傳遞methods引數, 可以改變HTTP的方法;
@app.route('/login', methods=['GET', 'POST'])
def login():
    # 1. 判斷http方法, 如果是post;
    if request.method == 'POST':
        # 2. 獲取前端使用者表單提交的資料;
        username = request.form['name']
        passwd = request.form['passwd']

        # 3. 判斷使用者名稱和密碼是否正確?
        if username in users:
            # 跳轉到另外一個頁面
            if passwd == users[username]:
                return redirect('https://www.baidu.com/')
            else:
                message = "使用者密碼錯誤"
                return render_template('login.html', message=message)
        else:
            message = "使用者不存在, 請註冊"
            return render_template('login.html', message=message)
    # 4. 如果不是post方法, 使用者沒有提交資料, 則進入登入介面;
    else:
        return render_template('login.html')


# 404異常處理函式;@app.errorhandler(404)
@app.errorhandler(404)
def not_found(e):
    return render_template('404.html')


# 丟擲異常: abort
@app.route('/users/<id>')
def user(id):
    if int(id) in range(1, 10):
        return "hello user" + str(id)
    else:
        abort(404)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9003)