Django自定义过滤器

Django 自定义过滤器,

在项目目录中建立templatetags目录。

建立my_filter.py 文件,

导入模板模块 :from django import template,

注册过滤器对象: register = template.Library()

在django内部,通过装饰器的方式来注册自定义过滤器

@register.filter                                                                                在HTML里面调用

def my_str(val):                                                                              {#       导入过滤器文件            #}

return '$' + str(val)   强转成str或int                                             {% load    my_filter           %}

                            {{       test    |    my_str        }}

#定义一个双参数的过滤器                  {{ '你好' | l_str_two:'Bu' }}<br>

@register.filter

def my_str_two(val,p1):

return val + p1

#定义一个多参数的过滤器                        {% l_str_many '大橘' '有了' '小宝宝' %}

#注册过滤器的时候,需要注册simple_tag

@register.simple_tag

def my_str_many(val,p1,p2):

return val + p1 + p2

#定义一个取余数的过滤器

@register.filter

def get_line(val):

return int(val) % 2

{# 判断积偶行 #}
<table>
{% for item in test_list %}
{% if forloop.counter|get_line == 0 %}
  <tr class="tr2">
  {% else %}
  <tr class="tr1">
  {% endif %}
    <td>
      {{ item }}
    </td>
  </tr>
{% endfor %}
</table><br>

除去标签:  {{ test_b | safe }}

django自定义中间层

在目录建立my_middle.py文件,可以达成类似flask“钩子“的方法,完成前置和后置操作

导入中间件库:from django.utils.deprecation import MiddlewareMixin

定义中间件类:

        class MyMiddle(MiddlewareMixin):

#定义请求之前的方法

            def process_request(self,request):

                request.session['str'] = 'welcome'

                 print('在请求之前')

#定义请求之后的方法

             def process_response(self,request,response):

                  print('在请求之后')

                  del request.session['str']

                   return response

Django 的session 需要设置连接mysql数据库

修改配置文件settions.py

'default': {

'ENGINE': 'django.db.backends.mysql', #数据库引擎

'NAME': 'mydjango',                       #数据库名

'USER': 'root',                       #用户名

'PASSWORD': '123456',                   #密码

'HOST': '',                           #数据库主机,默认为localhost

'PORT': '',                           #数据库端口,MySQL默认为3306

'OPTIONS': {

'autocommit': True,

}

}

修改 __init__.py 文件

#导包

import pymysql

#初始化

pymysql.install_as_MySQLdb()

django session 的增删取

存储

request.session[‘username’] = ‘123’

删除

del request.session[‘username’]

取值

request.session.get(“username”)

djang 过滤器和装饰器的更多相关文章

  1. Flask 页面缓存逻辑,jinja2 过滤器,测试器

    回调接入点-页面缓存逻辑 from flask import Flask,request,render_template from werkzeug.contrib.cache import Simp ...

  2. django基础 -- 4. 模板语言 过滤器 模板继承 FBV 和CBV 装饰器 组件

    一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用  {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...

  3. 插件和过滤器装饰器开发中的感悟-python-django

    写这篇随笔是因为今天自己在写插件和过滤方法的过程中碰壁了,折腾了好久终于稍微发现些问题,在此记下,以作备忘. 在看了xadmin的插件机制后,笔者也想使用该思想来扩展kadmin中视图的方法. 例如, ...

  4. 使用装饰器模式动态设置Drawable的ColorFilter

    使用装饰器模式动态设置Drawable的ColorFilter 欢迎各位关注我的新浪微博:微博 转载请标明出处(kifile的博客) 非常多时候我们都希望Android控件点击的时候,有按下效果,选中 ...

  5. flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)

    flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...

  6. python函数、装饰器、迭代器、生成器

    目录: 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递 ...

  7. flask模板语言,装饰器,路由及配置

    1.模板语言jinja2 Flask中默认的模板语言是Jinja2 1.0 模板传参 from flask import Flask,render_template app = Flask(__nam ...

  8. sitemesh 2.4 装饰器学习

    SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的 SiteMesh是OpenSymphony团队开发的JEE框架之一,它是一个非常优秀的页面 ...

  9. 巨蟒python全栈开发django5:组件&&CBV&FBV&&装饰器&&ORM增删改查

    内容回顾: 补充反向解析 Html:{% url ‘别名’ 参数 %} Views:reverse(‘别名’,args=(参数,)) 模板渲染 变量 {{ 变量名 }} 逻辑相关 {% %} 过滤器: ...

随机推荐

  1. Windows定位窗口对应的exe文件

    一.说明 以下两种情况我们会想要定位窗口是由哪个exe文件,或者什么命令启用 第一种是:广告窗口,现在经常时不时冒出一个广告窗口,要么是完全看不出哪个程序启动,要么是虽然大概知道是哪个应用启动(比如w ...

  2. weblogic CVE-2017-10271修复教程

    1.简介 CVE-2017-10271是weblogic wls-wsat组件的一个xml反序列化漏洞,可造成远程命令执行.更详细分析可见参考链接,本文强调在进行参考链接修复中的一些细节. 2.影响版 ...

  3. wine和cygwin安装使用教程

    可以简单地认为wine和cygwin就是功能相反的两个东西.wine是linux的windows模拟环境,让linux可以运行windows程序:cygwin是windows的linux模拟环境,让w ...

  4. Linux gcc getcwd()的实现 zhuan

      通过getcwd()可以获取当前工作目录. 1 #include <unistd.h> 2 3 char *getcwd(char *cwdbuf, size_t size);

  5. nyoj-0708-ones(dp)

    nyoj-0708-ones 题意:用1,+,*,(,). 这四个符号组成表达式表达数s(0 <= s <= 10000),且1最少时1的的个数 状态转移方程: dp[i] = min(d ...

  6. NOI2019冬令营报到通知

    由中国计算机学会(CCF)主办的2019全国青少年信息学奥林匹克冬令营(CCF NOI 2019冬令营)将于2019年1月24日-31日在广州市第二中学举行.其中1月24日为报到日,1月31日为疏散日 ...

  7. 【转】caffe数据层及参数

    原文: 要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个层(layer)构成,每一层又由许多参数组成.所有的参数都定义在caffe.proto ...

  8. JVM运行时内存区域

    JVM运行java程序时会将内存划分为若干个不同的数据区域: (1)程序计数器: 1.占用内存空间不大. 2.程序计数器相当于JVM所执行的字节码(jvm指令)的“行号指示器”,通过程序计数器的“值” ...

  9. SQL-18 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by

    题目描述 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no.薪水salary.last_name以及first_name,不准使用order byCREATE ...

  10. netty源码理解(三) 从channel读取数据

    下面的是ServerBootstrap 的内部类 ServerBootstrapAcceptor extends ChannelInboundHandlerAdapter 的方法 这里其实卡住了我很长 ...