自定义的过滤器,过滤器本质上是一个函数,当自带的过滤器不满住要求的时候,我要进行重写
1.app.add_template_filter(自定义过滤器的名字,‘被引用时的名字’) 2.@app.template_filter(‘被引用时的名字’)
def my_reverse(value): print('自定义的过滤器') value_later = value[::-1] return value_later app.add_template_filter(my_reverse,'my_reverse') @app.template_filter('maopaosort') def maopao(value): for j in range(len(value)): for i in range(len(value)-1-j): if value[i]>value[i+1]: value[i],value[i+1]=value[i+1],value[i] return value @app.route('/info') def info(): list1 = [1,2,3,4,5] return render_template('myreverse.html',list1=list1)可以在HTML页面应用如下 {{ 变量|过滤器 }}
{{ list1|my_reverse }} {{ [7,5,6,9,100,5,1]|maopaosort }}注意过滤器一定要加到app里面,不然运行py文件的时候不承认它为自定义的过滤器,会报错
注意在使用flash的时候必须要设置密匙,因为flash是基于session的 博主一般是将密匙设置在ini文件里然后在py文件中配置文件
#简易版本的密匙,单引号里面随便写 SECRET_KEY = 'hahahahaha'py文件
#配置文件 app.config.from_pyfile('./config.ini') @app.route('/info') def info(): #消息队列 flash('这是消息队列传递过来的东西') return render_template('flash.html')HTML页面
{% for msg in get_flashed_messages() %} {{ msg }} {% endfor %}可以在页面中将flash里面的字符串打印出来
首先我们要在虚拟环境里面下载flash_wtf
pip install flask_wtf然后就可以使用flask_wtf里面的方法了
from flask_script import Manager from flask import Flask, render_template, flash, request,make_response from flask_wtf import FlaskForm from wtforms import StringField,SubmitField,PasswordField from wtforms.validators import DataRequired app = Flask(__name__) #这个是自带的csrf验证,如果不关闭那么后面则一直验证未通过 app.config['WTF_CSRF_ENABLED'] = False #配置文件 app.config.from_pyfile('./config.ini') manger = Manager(app) #自定义一个表单 class LoginForm(FlaskForm): #validators是验证,如果不写会报空 #用户名,这个是labal username = StringField('用户名',validators=[DataRequired('输入用户名')]) pwd = PasswordField('密码',validators=[DataRequired('输入密码')]) sub = SubmitField('登陆') @app.route('/login',methods=['get','post']) def login(): csrf_token = 'sadasdasdasdsa' loginform = LoginForm() if request.method =='GET': response = make_response(render_template('login.html',form=loginform,csrf_token=csrf_token)) response.set_cookie('csrf_token',csrf_token) return response elif request.method == 'POST': #取出cookie中的csrf_token cookie_csrf = request.cookies.get('csrf_token') print(cookie_csrf) #取出form表单中的csrf_token form_csrf = request.form['csrf_token'] print(form_csrf) print(request.form.get('csrf_token')) #对比 if cookie_csrf != form_csrf: return 'csrf校验未通过' if loginform.validate_on_submit(): print('进入验证') else: print('验证未过') return 'ok' if __name__ == '__main__': manger.run()效果: