if语句
格式:
{% if command %} {% elif %} {% else %} {% endif %}
代码示例
flask_one.py
#encoding:utf-8
from flask import Flask,url_for,redirect,render_template
app = Flask(__name__)
@app.route('/<is_login>')
def index(is_login):
if is_login == "1": #模拟1为登陆成功
user = {
"aa":"test",
'bbb':'注销',
'age':"11"
}
return render_template('index.html',users=user)
else:
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% if users and users.age >10 %} #这里的users为py文件里传递的user字典,users.age为py文件user字典里的age <a href="#">{{ users.aa }}</a> <a href="#">{{ users.bbb}}</a> {% else %} <a href="#">登陆</a> <a href="#">注册</a> {% endif %} </body> </html>
url入口:127.0.0.1/{1,0..}
for语句
格式:
{% for .. %} {% endfor %}
代码实现:
flask_one.py
#encoding:utf-8
from flask import Flask,url_for,redirect,render_template
app = Flask(__name__)
@app.route('/')
def index():
users = {
'username':'tsdf',
'age':11
}
return render_template('index.html',user=users)
if __name__ == '__main__':
app.run(debug=True)
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% for k,v in user.items() %} #for语句 <p>{{ k }}----{{ v }}</p> {% endfor %} </body> </html>
redirect 传数据到模板语言(flash)
from flask import redirect,flash @app.route('/register',methods=['GET','POST']) def register(): if request.method == 'GET': return render_template('register.html') else: phone = request.form.get('phone') uname = request.form.get('username') pwd = request.form.get('password') pwd1 = request.form.get('password1') user = User.query.filter(User.phone == phone).first() if user is not None: return "用户已经存在" else: if phone == "" or uname == "": flash('手机号或者用户名不能为空') return redirect(url_for('register')) elif pwd != pwd1: flash('两次输入的密码不匹配') return redirect(url_for('register')) else: user = User(phone=phone,username=uname,password=pwd) db.session.add(user) db.session.commit() # user = User.query.filter(User.phone == phone).first() # print (user) return redirect(url_for('login'))
模板语言:
{% extends 'common.html' %} {% block title %} 注册 {% endblock %} {% block head %} <link rel="stylesheet" href="{{ url_for('static',filename='css/login_regist.css') }}"> {% endblock %} {% block body %} <div class="form-container"> <h4 style="text-align: center">注册</h4> <form action="" method="POST"> <div class="form-group"> <span><input type="text" class="form-control" id="exampleInputEmail1" placeholder="手机号" name="phone"></span> </div> <div class="form-group"> <span><input type="text" class="form-control" id="exampleInputEmail1" placeholder="用户名" name="username"></span> </div> <div class="form-group"> <span><input type="password" class="form-control" id="exampleInputPassword1" placeholder="密码" name="password"></span> </div> <div class="form-group"> <span><input type="password" class="form-control" id="exampleInputPassword1" placeholder="重复密码" name="password1"></span> </div> <button type="submit" class="btn btn-block" onclick="tj()">立即注册</button> </form> <p> {% for message in get_flashed_messages() %} {{ message }} {% endfor %} </p> </div> {% endblock %}
代码示例:
flask_one.py
#encoding:utf-8 from flask import Flask,url_for,redirect,render_template app = Flask(__name__) @app.route('/') def index(): books = [ {'name':'西游记','author':'吴承恩','price':111}, {'name': '红楼梦', 'author': '曹雪芹', 'price': 121}, {'name': '水浒传', 'author': '施耐庵', 'price': 131}, {'name': '三国演义', 'author': '罗贯中', 'price': 141} ] return render_template('index.html',book=books) if __name__ == '__main__': app.run(debug=True)
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <table border="1"> <thead> <th>书名</th> <th>作者</th> <th>价格</th> </thead> <tbody> {% for book in book %} #for循环列表并打印字典里的内容 <tr> <td>{{ book.name }}</td> <td>{{ book.author }}</td> <td>{{ book.price }}</td> </tr> {% endfor %} </tbody> </table> </body> </html>
自定义错误信息
@app.errorhandler(404) def page_noe_found(error): return render_template('home/404.html'),404 @app.errorhandler(500) def page_noe_found(error): return render_template('home/500.html'),500