关于消息闪现的问题
作者:互联网
通过一个简单的程序来理解:
唯一要讲的就是login函数,进行error判断以及用户名和密码登录的判别:
1.当登录失败的时候,定义错误,并且再次跳转到登录的页面,返回错误。
2.用户没有在页面中输入,导致请求方法为GET的时候,定义错误,再登录页面中返回错误。
3.当登录成功的时候,返回到主页,并且出现一个消息闪现。
from flask import Flask, flash, redirect, render_template,request, url_for app = Flask(__name__) app.secret_key = 'some_secret' @app.route('/') def index(): return render_template('index_1.html') #搞一个登录页面,页面显示,如果是登录正确,那么跳转首页,并闪现信息显示正确,不然再跳到登录页面,返回错误 @app.route('/login', methods=['GET', 'POST']) def login(): error = None #如果请求的方法是POST if request.method == 'POST': #如果没有错误的话,那么错误返回的None,如果错的话那么就返回下列代码中的错误 #当登录失败的时候,就会生成新的error错误 if request.form['username'] != 'admin' or request.form['password'] != 'secret': error = 'Invalid credentials' else: #当登录成功的时候消息闪现 flash('You were successfully logged in') return redirect(url_for('/index')) #如果请求方式是GET和账户密码错误的时候。那么返回login.html,并且提示错误,就是用户名和密码全部没输入 return render_template('login_1.html', error=error) if __name__ == "__main__": app.run()
layout.html:
首先是创建一个基模板,基模板的主要内容是消息闪现,并且设置一个大的html框架。
在这个基模板中,主要设置了一个共享的消息闪现的代码,然后设置了一个主要的body块,让子模板继承。
<!doctype html> <title>My Application</title> {% with messages = get_flashed_messages() %} {% if messages %} <ul class=flashes> {% for message in messages %} <li>{{ message }}</li> {% endfor %} </ul> {% endif %} {% endwith %} {% block body %}{% endblock %}
index_1.html:
在首页模板index_1.html中设置跳转到登录页面,继承基模板的body块,并且有了基模板消息闪现的特性,在body块中设置跳转页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% extends "layout.html" %} {% block body %} <h1>Overview</h1> <p>Do you want to <a href="{{ url_for('login') }}">log in?</a> {% endblock %} </body> </html>
login_1.html:
如果登录的过程中,出现了错误那么在登录页面中返回错误,并且再次跳转到登录页面,返回错误。
如果在登录的过程总,没有出现错误那么在登录页面中直接跳转到首页中,这时候会返回到首页中并且出现一个消息闪现。
{% extends "layout.html" %} {% block body %} <h1>Login</h1> {% if error %} <p class=error><strong>Error:</strong> {{ error }} {% endif %} <form action="" method=post> <dl> <dt>Username: <dd><input type=text name=username value="{{request.form.username }}"> <dt>Password: <dd><input type=password name=password> </dl> <p><input type=submit value=Login></p> </form> {% endblock %}
标签:错误,登录,跳转,闪现,html,消息,error,关于,页面 来源: https://www.cnblogs.com/dachang/p/11187533.html