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

  • 相关阅读:
    图像识别模型
    W tensorflow/core/util/ctc/ctc_loss_calculator.cc:144] No valid path found 或 loss:inf的解决方案
    CF1240F Football
    loj6537. 毒瘤题加强版再加强版
    Codeforces Global Round 9题解
    CF356E Xenia and String Problem
    CF1185G2 Playlist for Polycarp
    CF914F Substrings in a String
    Python3.5学习之旅一
    python内置数据结构性能分析
  • 原文地址:https://www.cnblogs.com/chengdongzi/p/10295463.html
Copyright © 2011-2022 走看看