美文网首页
flask学习笔记4-jinja2模版

flask学习笔记4-jinja2模版

作者: 如果仲有听日 | 来源:发表于2020-05-15 13:48 被阅读0次

    1. 模版基本使用语法

    基本传键值对的方式不做介绍,直接上一个传字典的demo:

    字典的值可以是任何python的基本类型(字符串、数值、list、dict)

    flask模版demo 模版html文件

    2. 过滤器

    2.1 字符串filter

    safe:禁用转义;处理xss攻击

        {{ 'hello' | safe }}

    capitalize:把变量值的首字母转成大写,其余字母转小写;

        {{ 'hello' | capitalize }}

    lower:把值转成小写;

        {{ 'HELLO' | lower }}

    upper:把值转成大写;

        {{ 'hello' | upper }}

    title:把值中的每个单词的首字母都转成大写;

        {{ 'hello' | title }}

    trim:把值的首尾空格去掉;

        {{ ' hello world ' | trim }}

    reverse:字符串反转;

        {{ 'olleh' | reverse }}

    format:格式化输出;

        {{ '%s is %d' | format('name',17) }}

    striptags:渲染之前把值中所有的HTML标签都删掉;

        {{ 'hello' | striptags }}

    2.2 链式过滤

        <p>{{ “hello world  “ | trim | upper }}</p>

    2.3 列表过滤器

    first:取第一个元素

        {{ [1,2,3,4,5,6] | first }}

    last:取最后一个元素

        {{ [1,2,3,4,5,6] | last }}

    length:获取列表长度

        {{ [1,2,3,4,5,6] | length }}

    sum:列表求和

        {{ [1,2,3,4,5,6] | sum }}

    sort:列表排序

        {{[6,2,3,1,5,4] | sort }}

    2.4 自定义过滤器

    自定义的过滤器名称如果和内置的过滤器重名,会覆盖内置的过滤器。

    方式一:通过add_template_filter (过滤器函数,模板中使用的过滤器名字)

    def filter_double_sort(ls):

       return ls[::2]

    app.add_template_filter(filter_double_sort,'double_2')

    方式二:通过装饰器  app.template_filter (模板中使用的装饰器名字)

    @app.template_filter('db3')

    def filter_double_sort(ls):

       return ls[::-3]

    3. 表单

    使用Flask-WTF表单扩展,可以帮助进行CSRF验证,帮助我们快速定义表单模板,而且可以帮助我们在视图中验证表的数据

    pipinstall Flask-WTF

    3.1 不使用Flask-WTF扩展

    模版文件:

    <form method='post'>

        <input type="text"

    name="username" placeholder='Username'>

        <input type="password"

    name="password" placeholder='password'>

        <input type="submit">

    </form>

    Flask视图程序:

    from flask importFlask,render_template,request

    @app.route('/login',methods=['GET','POST'])

    def login():

       if request.method == 'POST':

           username = request.form['username']

           password = request.form['password']

           print username,password

                 return“success”

             else:

                       returnrender_template(“login.html”)

    3.2 使用Flask-WTF扩展

    需要设置 SECRET_KEY 的配置参数

    模板页:

    <form method="post">

           #设置csrf_token

           {{ form.csrf_token() }}

           {{ form.us.label }}

            <p>{{ form.us }}</p>

           {{ form.ps.label }}

            <p>{{ form.ps }}</p>

           {{ form.ps2.label }}

            <p>{{ form.ps2 }}</p>

            <p>{{ form.submit() }}</p>

           {% for x in get_flashed_messages() %}

               {{ x }}

           {% endfor %}

    </form>

    Flask视图程序:

    rf#coding=utf-8

    from flask import Flask,render_template,redirect,url_for,session,request,flash

    #导入wtf扩展的表单类

    from flask_wtf import FlaskForm

    #导入自定义表单需要的字段

    from wtforms importSubmitField,StringField,PasswordField

    #导入wtf扩展提供的表单验证器

    from wtforms.validators importDataRequired,EqualTo

    app = Flask(__name__)

    app.config['SECRET_KEY']='1'

    #自定义表单类,文本字段、密码字段、提交按钮

    class Login(Flask Form):

       us = StringField(label=u'用户:',validators=[DataRequired()])

       ps = PasswordField(label=u'密码',validators=[DataRequired(),EqualTo('ps2','err')])

       ps2 = PasswordField(label=u'确认密码',validators=[DataRequired()])

       submit = SubmitField(u'提交')

    #定义根路由视图函数,生成表单对象,获取表单数据,进行表单数据验证

    @app.route('/',methods=['GET','POST'])

    def index():

       form = Login()

       if form.validate_on_submit():

           name = form.us.data

           pswd = form.ps.data

           pswd2 = form.ps2.data

           print name,pswd,pswd2

           return redirect(url_for('login'))

       else:

           if request.method=='POST':

    flash(u'信息有误,请重新输入!')

       return render_template('index.html',form=form)

    if __name__ == '__main__':

       app.run(debug=True)

    相关文章

      网友评论

          本文标题:flask学习笔记4-jinja2模版

          本文链接:https://www.haomeiwen.com/subject/kailrhtx.html