flask 模版语言及信息传递
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
flask 模版语言及信息传递的更多相关文章
- puppet(4)-类、模版语言、模块
puppet(4)-类.模版语言.模块 代码重用: class, module 类 类的简单说明 类是用于公共目的的一组资源,是命名的代码块,创建后可在puppet全局进行调用,类可以继承类是我们构建 ...
- Jinja2模版语言自定义filter的使用
Jinja2模版语言,自带有一些filter,能够在前端的模版中控制数据按照相应的方式显示.比如以下两种filter,分别能在前端控制数字的近似精度显示和根据字符串长度补齐: round(value, ...
- Flask - 模板语言jinja2 和render_template高级用法
目录 Flask - 模板语言jinja2 和render_template高级用法 一. 字典传递至前端 二. 列表传入前端Jinja2 模板的操作: 三. 大字典传入前端 Jinja2 模板 四. ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
- tg2015 信息传递 (洛谷p2661)
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- Django模版语言 格式化显示 后台datatime()时间
Django模版语言 格式化显示 后台datatime()时间 场景描述:
- [NOIP2015]信息传递
[NOIP2015]信息传递[问题描述]有
- [NOIP2015] 提高组 洛谷P2661 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- 使用postMesssage()实现跨域iframe页面间的信息传递----转载
由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...
随机推荐
- python之旅六【第六篇】模块
json和pickle 用于序列化的两个模块json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换 json模块提供了四 ...
- P1200 你的飞碟在这儿
P1200 题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者. 因此,他们要用一种聪明的方案让这些小组提前知道 ...
- 如何简单实现接口自动化测试(基于 python) 原博主地址https://blog.csdn.net/gitchat/article/details/77849725
如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python ...
- codeforces 1051F The Shortest Statement
题目链接:codeforces 1051F The Shortest Statement 题意:\(q\)组询问,求任意两点之间的最短路,图满足\(m-n\leq 20\) 分析:一开始看这道题:fl ...
- 【XSY2720】区间第k小 整体二分 可持久化线段树
题目描述 给你你个序列,每次求区间第\(k\)小的数. 本题中,如果一个数在询问区间中出现了超过\(w\)次,那么就把这个数视为\(n\). 强制在线. \(n\leq 100000,a_i<n ...
- project 2013 删除资源
1.分析 在资源名称这边一旦输入过资源名称,下次点击下拉框就会出现历史记录,如何删除 2.步骤 资源-->分配资源-->点击资源名称,按F2,按DEL键
- 搭建gogs常见问题
1.无法连接ssh,显示connection refuse. 原因是“custom/conf/app.ini”没有开启ssh功能,改为以下配置就行了 START_SSH_SERVER = true ...
- mysql Navicat 连接MySQL 8.0.11 出现2059错误
https://www.cnblogs.com/lifan1998/p/9177731.html 原因 mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8 ...
- Hdoj 1115.Lifting the Stone 题解
Problem Description There are many secret openings in the floor which are covered by a big heavy sto ...
- python3 特性
切片: 就是可以取到对象中任意位置的元素,[start:end:interval]:字符串.列表.元组可切片,字典.set()不可: L[:] #复制原L L[:10] #前十个 L[-10:] #后 ...