• djang 过滤器和装饰器


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

  • 相关阅读:
    VB.Command()的参数
    XAMPP 启动mysql报错 InnoDB: Error: could not open single-table tablespace file……
    在不安装Windows服务的情况下,如何进行调试或测试
    Java基础东西(按位操作运算)
    浅谈web应用的负载均衡、集群、高可用(HA)解决方案
    关于CSDN, cnblog, iteye和51cto四个博客网站的比较与分析
    bzoj2243[SDOI2011]染色
    洛谷P2740 [USACO4.2]草地排水Drainage Ditches
    bzoj4198[noi2015]荷马史诗
    矩阵快速幂模板(pascal)
  • 原文地址:https://www.cnblogs.com/chengdongzi/p/10295463.html
Copyright © 2020-2023  润新知