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”)