zoukankan      html  css  js  c++  java
  • 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”)

  • 相关阅读:
    js-禁止微信H5页面点击右上角菜单时出现“复制链接”,且分享仅支持微信分享
    js-获取用户移动端网络类型:wifi、4g、3g、2g...
    小程序-云开发部署流程(步骤二)
    小程序-(报错)请使用 2.2.3 或以上的基础库以使用云能力(步骤一)
    解决iOS10的Safari下Meta设置user-scalable=no无效的方法
    领域驱动, 事件驱动,测试驱动
    spring web项目中整合netty, akka
    why rpc
    nginx配置https证书
    org.apache.http.NoHttpResponseException
  • 原文地址:https://www.cnblogs.com/chengdongzi/p/10295463.html
Copyright © 2011-2022 走看看