环境处理器
定义之后即可在前端进行获取对应的属性,例如 project_num 传入必须是一个字典, 值类型任意,意为着可以传对象进去
定义
函数用 @app.context_processor 装饰器装饰,是一个上下文处理器
作用是在模板被渲染钱运行所有其装饰的函数,并将函数返回的字典导入到模板上下文中与模板上下文合并不仅可以传递变量,还可以传递函数 需要传递的函数直接放在上下文装饰器下面即可
# 传递参数的写法
@app.context_processor
def project_num():
return {"project_num":4}
# 传递函数的写法
@app.context_processor
def method():
def for_mat():
return "上下文管处理器添加函数"
return dict{methods= method}
全局函数
前面是在上下文环境中添加,全局函数是完完全玩的一个全局,随时都可以用用法和全局变量是一样的
def accept_pattern(pattern_str):
pattern =re.compile(pattern_str,re.s)
def search(content):
return pattern.findall(content)
return dict(search =search)
app.add_template_global(accept_pattern,"accept_pattern")
模板继承
如果有django的基础,这里将很容易理解
前端页面中的书写格式总结
模板引擎
{{ 变量名 }} 从后台读取数据
for循环
{% for %}
{% endfor %}
if判断
{%if %}
{% elif %}
# 模板继承 类似于django的模板继承 ,提高开发效率
{% block content %} content 为变量名
变化定制的的内容
{% end block %}
# 子页面使用的时候
{% extends "母版名"%}
{% block content %} content 用作示例,可自定义
定制自己想要的子页内容
{% endblock %} 如果想要母版中定义的内容{{super()}}即可
不想重写可以直接使用 超继承 {{super()}}
引入组件
include
从外部引入一部分代码进来
{% include "_parts.html" %}
模板中的函数——宏
相当于python中的函数,分为定义,调用两个步骤
一般讲宏单独定义在一个html页面中,通过调用来使用
定义
_macro.html
{% macro render_field_2(mylist) %} mylist为形参,
{{mylist[0]}}
{{mylist[1]}}
{{mylist[2]}}
{{mylist[3]}}
{% endmacro %}}
在目标处进行调用
{% from '_macro.html' import render_field_2 %}
{% set data=[1,2,3,4,5] %}
{{ render_field_2(data)}}
表单验证概念
记住一点,任何从客户端发送过来的数据,都需要持怀疑态度
要针对访问量很大的接口进行参数校验,防止后台db被攻击