from flask import Flask,render_template
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
@app.route('/')
def index():
return "this is index"
@app.route('/template')
def template():
return render_template("file01.html",name="tom", age=19, list=[1,2,3,4,5,6])
def filter01(list):
list.reverse()
return list
#将自定义过滤器添加到app
app.add_template_filter(filter01,"filter")
#使用装饰器自定义过滤器
@app.template_filter(filter02)
def filter02(list):
list.reverse()
return list
if __name__ == "__main__":
manager.run()
./templates/file01.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<br>
{{ name }}
{% for item in list %}
{% if item%2 == 0 %}
<li>{{ loop.revindex0 }}、{{ item }}</li>
{% endif %}
{% endfor %}
过滤器
{{ list | sum }}
{% for item in list | reverse %}
<li>{{ loop.index0 }}、{{ item }}</li>
{% endfor %}
自定义过滤器
{{ list | filter }}
自定义过滤器2
{{ list | filter2 }}
</br>
宏<br>
{% macro input(name1,name2) %}
{{ name1 }}:<input type="text" name="name">
{{ name2 }}:<input type="password" name="pwd">
{% endmacro %}
{{ input("账户","密码") }}
<br>
宏-代码复用 <br>
{% import "file02.html" as f %}
{{ f.input("用户名","密码") }}
<br>
代码复用-包含
{% include "file03.html" ignore missing %}
<br>
特有变量<br>
{{ config }}
<br>
特有函数<br>
{{ request.url }}、{{ url_for('template') }}、{{ get_flashed_messages }}
<br>
代码复用-继承
{% extends "file03.html" %}
{% block top %}
{{ super() }}
<li>这是子模板的top代码</li>
{% endblock %}
</body>
</html>
./templates/file02.html
{% macro input(name1,name2) %}
{{ name1 }}:<input type="text" name="name">
{{ name2 }}:<input type="password" name="pwd">
{% endmacro %}
./templates/file03.html
{% block top %}
<li>这是父模板的top代码</li>
{% endblock %}
{% block content %}
<li>这是父模板的content代码</li>
{% endblock %}
WTF表单
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo
app = Flask(__name__)
app.config['SECRET_KEY'] = 'dsdhsjn92332'
class MyWtfForm(FlaskForm):
username = StringField(label='用户名:', validators=[DataRequired('用户名不能为空')])
password = PasswordField(label='密码:', validators=[DataRequired('密码不能为空')])
repassword = PasswordField(label='确认密码:', validators=[DataRequired('确认密码不能为空'), EqualTo('password', '两次输入的密码不一致')])
submit = SubmitField(label='注册')
@app.route('/index')
def index():
my_form = MyWtfForm()
return render_template("temp1.html", my_form=my_form)
@app.route('/reg', methods=['POST'])
def reg():
my_form = MyWtfForm()
username = my_form.username.data
password = my_form.password.data
if my_form.validate_on_submit():
return "注册成功,用户名:%s,密码:%s" % (username, password)
else:
return "注册失败"
if __name__ == "__main__":
app.run(debug=True)
./templates/temp1.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/reg" method="post">
{{ my_form.csrf_token }}
{{ my_form.username.label }}{{ my_form.username }}<br>
{{ my_form.password.label }}{{ my_form.password }}<br>
{{ my_form.repassword.label }}{{ my_form.repassword }}<br>
{{ my_form.submit }}
</form>
</body>
</html>
扫描二维码关注公众号,回复:
2773813 查看本文章