zoukankan      html  css  js  c++  java
  • django 模板语言之 filter 自定义模板

    可以自己写python函数放在模板语言里用

    这种方法是django里面的 filter

    {{ item.event_start|date:"Y-m-d H:i:s"}}
    {{ bio|truncatewords:"30" }}
    {{ my_list|first|upper }}
    {{ name|lower }}

    {{name|python的函数}} django内部把python函数放在模板中括号里面使用

    在urls.py 添加tpl4 对应关系 路由关系

    from django.conf.urls import url
    from django.contrib import admin
    from django.conf.urls import include
    from app01 import views
    
    urlpatterns = [
        # url(r'^admin/', admin.site.urls),
        # url(r'^index/', views.index),
        url(r'^tpl4/', views.tpl4),
    ]

    app01 app项目下 的views.py tpl4函数

    def tpl4(request):
        name = "YYDASDAS21312DASD"
        return render(request,"tpl4.html",{'name':name})

    tpl4.html  

    {{name|lower}}  把name的字符串变成小写

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Title</title>
    </head>
    <body>
        {{ name}}<br>
        {{ name|lower}}
    </body>
    </html>

    自定义函数
    simple_tag
    a. app项目下创建templatetags目录
    b. 创建任意xxoo.py文件 用做自定义py函数
      c. 创建template对象 register
    在函数或者类 前面 加上创建的对象装饰器register  @register.filter
    对象不能改名字 必须是register
    
    
    register = template.Library()
       
    @register.filter

    #!/usr/bin/env python
    #coding:utf-8
    from django import template
    from django.utils.safestring import mark_safe
       
    register = template.Library()
       
    @register.filter
    def my_simple_time(v1,v2):
        return  v1 + v2
    d.    
    @register.filter
    def func(a1,a2) 最多传两个参数
    return "asdfasd"


    e. settings中注册APP

    f.在使用自定义filter的html文件中导入之前创建的 xx.py 文件名,
    顶部 {% load xxoo %}

    g.使用filter
    格式
    {{参数1|函数名:"参数2"}} 不能加空格,有限制
     {{参数1|函数名:数字}}  传数字参数

     py文件的函数有参数,需要传参数


    缺点:
    最多两个参数,不能加空格
    优点:
    能作为if条件




    创建bgg.py 创建 函数 装饰器
    bgg.py代码

    @register.filter
    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.filter
    def BOO(a1,a2):
        print(a1,a2)
        return a1,a2

    后台拿到
    ok 5
    [11/Dec/2018 01:31:31] "GET /tpl4/ HTTP/1.1" 200 278

    tpl4.html 

     {{参数1|函数名:数字}}   {{a1|BOO:5}}
    {% load bgg %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Title</title>
    </head>
    <body>
         {{ "ok"|BOO:5 }}
    </body>
    </html>
    显示页面
     

     第二种方法显示

    bgg.py
    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.filter
    def BOO(a1,a2):
        print(a1,a2)
        return a1,a2

    后台拿到

    ok helo
    [11/Dec/2018 01:43:11] "GET /tpl4/ HTTP/1.1" 200 291
    {{参数1|函数名:"参数2"}} 
    {% load bgg %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Title</title>
    </head>
    <body>
         {{ "ok"|BOO:"helo" }}
    </body>
    </html>
     
  • 相关阅读:
    ubuntu 启动 卡死在 clean ... file ... blocks
    realsense opencv example 运行时无显示退出
    realsense example 最简单编译
    python内置方法
    接口自动化测试框架
    git使用问题
    自动化测试工具原理
    四层协议网络传输
    字符串反转
    排除链接数性能瓶颈
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/10092135.html
Copyright © 2011-2022 走看看