一、模板语言之自定义filter

自定义filter文件存放位置

模板中自定义函数- 在已注册的app中创建一个名字叫 templatetags 文件夹- 任意创建一个py文件- 创建名字交 register 的Library类的对象- 定义函数from django.template import Libraryregister = Library()# 调用示例:{{ "a1"|meikai:"n1,n2"}}# 参数最多2# 可以做if的条件
    @register.filterdef meikai(a1,a2):n1,n2 = a2.split(',')data = "我的名字叫:%s,我喜欢%s和%s" %(a1,n1,n2)return data# 调用示例:{% wangyan 1 2 3 4 %}# 参数无限制# 无法做if条件
    @register.simple_tagdef wangyan(a1,a2,a3,a4):result = a1+a2+a3+a4return 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 Libraryregister = 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_requestprocess_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,redirectclass AuthMiddleware(MiddlewareMixin):def process_request(self,request):# 如果么有返回值;返回None,表示可以继续往下执行# 如果有返回值,执行自己的response以及以上的response。if request.path_info == '/login/':return Noneuser_info = request.session.get('user_info')if not user_info:# return HttpResponse('请登录')return redirect('/login/')def process_response(self,request,response):return response

转载于:https://www.cnblogs.com/Coufusion/p/8379358.html

Python学习(三十七)—— 模板语言之自定义filter和中间件相关推荐

  1. JavaScript学习(三十七)—实现右键自定义菜单的功能

    JavaScript学习(三十七)-实现右键自定义菜单的功能 代码如下: <!DOCTYPE html> <html lang="en"><head& ...

  2. python 保存文件 吃内存_孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化...

    孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...

  3. python学习三-基础语法

    python学习三-基础语法(2019-12-24日晚) 1.源码文件 Python源码文件名通常采用小写的方式,常见的扩展名有: py:基本的源码扩展名. pyw:是另一种源码扩展名,跟py唯一的区 ...

  4. Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条

    Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条 做好的宏脚本程序,每次打开脚本加载程序太多麻烦,为了方便的调用脚本做各种操作,可以使用系统的自定义工具条功能将脚本加载到工具条上. ...

  5. tensorflow学习笔记(三十七):如何自定义LSTM的initial state

    如何初始化LSTM的state LSTM 需要 initial state.一般情况下,我们都会使用 lstm_cell.zero_state()来获取 initial state.但有些时候,我们想 ...

  6. Python学习笔记——Flask模板

    目录 3.1 模板 3.2 过滤器: 3.3 Web表单: 3.4 控制语句 3.5 宏.继承.包含 3.6 Flask中的特殊变量和方法: 3.1 模板 在前面的示例中,视图函数的主要作用是生成请求 ...

  7. 『Python Kivy』Kivy模板语言KV说明

    为什么80%的码农都做不了架构师?>>>    语言概念 KV语言允许你以声明的方式创建控件树,以及绑定控件属性到其他的控件或使用一种自然的方式进行回调. 它允许非常快速并灵活的改变 ...

  8. Python学习三: 爬虫高级技巧 与 模拟实战练习

    三大爬虫技巧 许多网站针对爬虫的访问都设置了一定的障碍,通过这三步技巧,轻松绕过部分的反爬虫限制. (1)设置程序休止时间 import time import random# 休止睡眠 1 秒 这里 ...

  9. Python学习笔记——Tornado模板

    4.1 静态文件 现在有一个预先写好的静态页面文件 (下载静态文件资源), 我们来看下如何用tornado提供静态文件. static_path 我们可以通过向web.Application类的构造函 ...

最新文章

  1. 第十七单元 Samba服务
  2. 关于某些 Visual Studio Code 扩展程序无法在浏览器中运行的原因
  3. SAP云平台部署应用时遇到的502 Updating service failed - Bad Gateway
  4. C# 消息队列之MSMQ
  5. 云头条 |华为云发布全新Slogan;AWS推出DocumentDB;FRB信号刷屏
  6. java中的STL库_C++11 STL线程库实现一个简单的线程池
  7. 三国历史的教训读后感_历史上伟大的创新者的教训,你永远都不会忘记
  8. 编程菜鸟的日记-初学尝试编程递归
  9. 《看见》读后感:跟柴静一起成长,追求独立与真相
  10. 主板24pin接口详图_老电源也兼容 简单DIY 24Pin转接线
  11. JAVA抛出异常的三种形式
  12. 泛函分析(空间部分)知识点总结
  13. android蓝牙键盘输入法,手机外接蓝牙键盘,用什么输入法好?
  14. 揭开CVE漏洞挖掘与编号申请那层神秘窗户纸
  15. linux ffmpeg 合并视频文件,使用ffmpeg合并视频
  16. UHS-II文档学习
  17. Excel把一个工作表根据条件拆分成多个工作表
  18. ubuntu 安装ttf-mscorefonts-installer
  19. pin assignment
  20. 关于大学生课余时间分配利用的调查报告

热门文章

  1. Go 语言 Gin 框架实战项目笔记
  2. 【SpringMVC笔记】Ajax 入门(jQuery.ajax)
  3. 【恋上数据结构】布隆过滤器(Bloom Filter)原理及实现
  4. 【安卓笔记】—— 页面导航 Navigation(2)
  5. 数据分析没价值?——深思对业务的洞察有多少?
  6. Gartner2017年数据科学领域最酷供应商出炉,实至名归
  7. google map flex
  8. android hook底层代码_Java-Hook技术-入门实践(反射、动态代理)-Hook拦截通知(当前App/Context)...
  9. python消息队列celery_python—Celery异步分布式
  10. C# list删除 另外list里面的元素_[Python]列表(list)操作