Python学习(三十七)—— 模板语言之自定义filter和中间件
一、模板语言之自定义filter
自定义filter文件存放位置
模板中自定义函数
- 在已注册的app中创建一个名字叫 templatetags 文件夹
- 任意创建一个py文件
- 创建名字交 register 的Library类的对象
- 定义函数
from django.template import Library
register = Library() # 调用示例:{{ "a1"|meikai:"n1,n2"}}
# 参数最多2
# 可以做if的条件
@register.filter
def meikai(a1,a2):
n1,n2 = a2.split(',')
data = "我的名字叫:%s,我喜欢%s和%s" %(a1,n1,n2)
return data # 调用示例:{% wangyan 1 2 3 4 %}
# 参数无限制
# 无法做if条件
@register.simple_tag
def wangyan(a1,a2,a3,a4):
result = a1+a2+a3+a4
return result
注意事项
py文件必须写上:
from django.template import Library
register = Library() 自定义函数的两种方式:
@register.filter
缺点:最多只能传两个参数,在模板使用方法{{ 参数1|函数名:参数2 }}
优点:可以在if判断中使用 @register.simple_tag
优点:可以传递多个参数,在模板使用方法{% 函数名 参数1 参数2 参数3 ... %} 在模板中想要使用自定义函数,必须先导入py文件,在模板的开头加上一句:
{% load py文件名(不用.py后缀) %}
代码示例:
from django.template import Library register = Library() @register.filter
def t1(arg):
return arg.upper() @register.simple_tag
def melody(n1, n2, n3):
str = "I'am {},I like {},my dream is to be a {}".format(n1, n2, n3)
return str
二、中间件
概念:
中间件是一个类 定义:
以后想要对所有的请求做统一操作时,用中间件。(几个例外)
只是对少量的视图函数做操作时,用装饰器。 任务:
1. 对用户请求记录日志
2. 用户登录验证(只有login) 梳理:
1. 类
- 继承MiddlewareMixin
- 两个方法
process_request
process_response,必须设置返回值
2. 应用中间件 MIDDLEWARE = [
...
'xxxx.md.M1',
] 3. 示例:
1. 对用户请求记录日志
2. 用户登录验证 (只有login)
3. 权限验证 PS: 图+方法+参数
Django的生命周期
浏览器发送请求,经过wsgi,对请求数据进行解析,并封装成request,
然后经过中间件,执行中间件的process_request方法: 1.如果没有返回值或者返回值为None,则到路由系统,然后到视图系统,执行视图函数,通过ORM调用数据库,通过template调用模板语言,并把response返回 2.如果有返回值,则不经过路由系统和视图系统,直接执行中间件的process_response方法,然后经过wsgi进行数据封装,最后返回给浏览器进行渲染
自定义中间件—登陆验证
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse,redirect class AuthMiddleware(MiddlewareMixin):
def process_request(self,request):
# 如果么有返回值;返回None,表示可以继续往下执行
# 如果有返回值,执行自己的response以及以上的response。 if request.path_info == '/login/':
return None user_info = request.session.get('user_info')
if not user_info:
# return HttpResponse('请登录')
return redirect('/login/') def process_response(self,request,response):
return response
Python学习(三十七)—— 模板语言之自定义filter和中间件的更多相关文章
- 6月15日 python学习总结 Django模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- python学习三十七天函数的作用域查找顺序LEGB
python函数的作用域查找顺序LEGB,分别为 locals eclosing globals builtins .了解作用域的范围,可以更好的操作你想要的业务,分别介绍一下. 1,local ...
- 孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化
孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...
- Python Django 之 Template 模板语言简介
一.什么事模板语言 html+逻辑控制语句 二.模板语言的作用 帮助前端处理后端发来的数据,方便前端展示(杂糅渲染) 三.模板语言语法 1.{{变量}} 变量使用双大括号{{}} 2.万能的句点号. ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
- Django学习之 - 基础模板语言
模板语言if/else/endif {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% else %} &l ...
- Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类
一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...
- Python学习笔记之map、zip和filter函数
这篇文章主要介绍 Python 中几个常用的内置函数,用好这几个函数可以让自己的代码更加 Pythonnic 哦 1.map map() 将函数 func 作用于序列 seq 的每一个元素,并返回处理 ...
- Python - Django - 模板语言之自定义过滤器
自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 ...
随机推荐
- mpvue——动态渲染echarts图表
前言 使用mpvue-echarts来写图表,那个F2再提醒自己下要踩坑不能忘记.遇到了一个问题就是数据不能动态的去渲染,这个其实官方给了我们对应的方法 懒加载 代码 修改了调用initChart() ...
- CSS概念,引入,选择器
概念 层叠样式表,定义如何显示HTML元素. 使用方式 行内样式 不推荐使用此方式 结构 和 样式的 杂糅会影响后期的维护 <p style="color: red"> ...
- 2019南昌邀请赛网络预选赛 M. Subsequence
传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...
- 不得不用的提高效率小技巧让你用Mac更顺手| Mac小技巧(三)
文章内容及图片来源于:知乎,如果涉及版权问题,请联系作者删除 文章收录于:风云社区(提供上千款各类mac软件的下载) 1. 用预览给GIF删帧 我们在给文章配图或者做表情包的过程中,常需要截取 GIF ...
- 模型评估【PR|ROC|AUC】
这里主要讲的是对分类模型的评估. 1.准确率(Accuracy) 准确率的定义是:[分类正确的样本] / [总样本个数],其中分类正确的样本是不分正负样本的 优点:简单粗暴 缺点:当正负样本分布不均衡 ...
- kubernetes之ingress及ingress controller
什么是ingress Ingress是授权入站连接到达集群服务的规则集合. 从外部流量调度到nodeprot上的service 从service调度到ingress-controller ingres ...
- SpringBoot项目@RestController使用 redirect 重定向无效
Spring MVC项目中页面重定向一般使用return "redirect:/other/controller/";即可. 而Spring Boot当我们使用了@RestCont ...
- 第九节:从源码的角度分析MVC中的一些特性及其用法
一. 前世今生 乍眼一看,该标题写的有点煽情,最近也是在不断反思,怎么能把博客写好,让人能读下去,通俗易懂,深入浅出. 接下来几个章节都是围绕框架本身提供特性展开,有MVC程序集提供的,也有其它程序集 ...
- [物理学与PDEs]第3章第2节 磁流体力学方程组 2.3 磁流体力学方程组
1. 磁流体力学方程组 $$\beex \bea \cfrac{\p {\bf H}}{\p t} &-\rot({\bf u}\times{\bf H})=\cfrac{1}{\sigma ...
- LINUX常用操作快捷方式
1. tab 命令补全 这个按键地球人都知道了! 2. Esc+ . 补全最后一次键入的字符 3.Ctrl + a 跳到命令开头 4.Ctrl+e 跳到命令结尾 5 Ctrl+ u 光标处到命令行开 ...