[oldboy-django][2深入django]django模板使用函数

1 模板引入子html--include

7 模板引擎
    - 母版

    - include,导入公共的html
        a. 用法:{% include "pub.html" %}, pub.html还可以添加 {{ name }}
        b. 一个页面可以导入多次,一个html只能有一个母版
        c.样例
            # public.html
                <div class="public">
                    <div class="content">
                        {{ userinfo }}
                    </div>
                </div>

            # app02_test.html
                <h3>include</h3>
                {% include "public.html" %}
                {% include "public.html" %}

            # views
            def test(request):
                return render(request, ‘app02_test.html‘, {‘userinfo‘:{‘k1‘:‘v1‘, ‘k2‘: ‘v2‘}})

2 模板使用(渲染数据 + 调用函数)

- 模板
        - 接收被渲染数据
            views参数传递:{‘userInfo‘: {‘k1‘: ‘v1‘, ‘k2‘:‘v2‘}}
            前端接收可以
                {% for v in userInfo.values %}
                {% endfor %}
            或者
                {% for k,v in userInfo.items %}
                {% endfor %}
            或者
                {% for k in userInfo.keys %}
                {% endfor %}

        - 模板执行函数, 而且函数不是js函数,而是py里面的函数
            a.{{ name|upper}}  // name是后台传递给前端的带渲染数据,upper是转换大写函数

3 自定义函数,供模板调用

- 自定义模板filter
            a.在应用创建文件夹templatetags
            b.创建任意py文件, xx.py
                from django import template
                register = template.Library()

                @register.filter
                def my_upper(value):
                    return value.upper()
            c.在模板文件导入xx.py
                开头导入 {% load xx %}

            d.在模板使用函数
                {{ ‘liuzhipeng‘|my_upper}}  ,前面的liuzhipeng为参数传递给my_upper

            e. 一定要注册app_02

        - 自定义tag
            a.在应用创建文件夹templatetags
            b.创建任意py文件, xx.py
                from django import template
                register = template.Library()

                @register.simple_tag
                def my_concat(arg1, arg2):
                    return  arg1 + arg2
            c.在模板文件导入xx.py
                开头导入 {% load xx %}

            d.在模板使用函数tag
                {% my_concat "alex" "is sb" %}

            e. 一定要注册app_02

        - filter 和simple_tag区别
            a. filter最多能有两个参数
            b. filter模板调用方式: {{ 参数|函数}}
            c. simple_tag参数个数无限制
            d. simple_tag使用方式:{% 函数 参数 参数 %}
            e. {% if name|my_bool %}  可以这样使用filter,而tag则不能
            f. simple_tag反向生成url
                {%  url  ‘url别名‘ %}
            g. 可以{% if name|my_bool %}, 但是simple_tag不行

时间: 2024-10-14 00:56:36

[oldboy-django][2深入django]django模板使用函数的相关文章

Django基础,Day10 - template 模板引擎与路径设置

作为一个Web框架,Django需要一个方便的方式来生成动态的HTML.最常见的方法依赖于模板.模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容. Django框架后端默认支持自生内置的一套模板系统DTL(Django Template Language) 和 有名的Jinja2模板系统.当然,也可以从第三方模块中之前其他模板系统.如果没有特殊要求,建议使用Django自带的DTL模板系统,这也是django 1.8之前唯一可以的内置选项. TEMPLATE 默认配置

Django笔记(3)-- 模板

1.模板 模板是一个文本,用于分离文档的表现形式和内容. 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签). 模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档. 在Python代码中使用Django模板的最基本方式如下: 可以用原始的模板代码字符串创建一个 Template 对象, Django同样支持用指定模板文件路径的方式来创建 Template 对象; 调用模板对象的render方法,并且传入一套变量context.它将返回一个基于模

django第二个项目--使用模板

第一步: 创建新项目secondproject cd /tmp/django-admin startproject secondeproject 第二步: 创建一个用于放置模板文件夹 cd /tmp/secondeproject/ mkdir templates touch templates/template.html template.html内容如下: <!doctype html> <html> <head> <title>template page

Django项目实践2 - Django模板

http://blog.csdn.net/pipisorry/article/details/45061511 上篇:Django项目实践1 - 创建Django项目 Django模板 {视图和模板对逻辑和显示进行了分隔} 上面是使用 django.http.HttpResponse() 来输出"Hello World!".该方式将数据与视图混合在一起,不符合Django的MVC思想.或者HTML被直接硬编码在 Python 代码之中. html = "<html>

Python学习---Django的新工程设置模板

该模板完全可以在创建好新工程后进行部分代码替换 创建app01的  python startapp app01 创建static子目录 settings.py """ Django settings for user_manager project. Generated by 'django-admin startproject' using Django 2.0.1. For more information on this file, see https://docs.d

Django 第三课 【模板】

## 模板 在之前的章节中 ,视图函数只返回文本,而实际上生产环境中其实很少这样用,因为实际的页面大多数是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面.目前市面上有非常多的模板系统.其中最知名最好用的就是DTL 和Jinja2.DTL 是Django Temlate Language 三个单词的缩写.也就是Django自带的模板语言.当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,和Django可以达到无缝衔接而不会产生一些不兼容的情况

Django学习系列17:在模板中渲染待办事项

前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题.要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py def test_displays_all_list_items(self): Item.objects.create(text='itemey 1') Item.objects.create(text='itemey 2') response = self.client.get('/') self.assertIn('itemey 1',

Django的标准库django.contrib包介绍

前面我们激活了 Django 后台,我们要使用自动化的站点管理工具(django.contrib.admin),所以最好对Django.contrib进行了解,它是啥?它是一个强大的功能包,是Django的标准库. Django的标准库存放在 django.contrib 包中.每个子包都是一个独立的附加功能包. 这些子包一般是互相独立的,不过有些django.contrib子包需要依赖其他子包. 在 django.contrib 中对函数的类型并没有强制要求 .其中一些包中带有模型(因此需要你

Django项目实践4 - Django网站管理(后台管理员)

http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类站点, 管理界面 是基础设施中很重要的一部分. 这是以网页和有限的可信任管理者为基础的界面,它能够让你加入,编辑和删除站点内容. 常见的样例: 你能够用这个界面公布博客,后台的站点管理者用它来润色读者提交的内容,你的客户用你给他们建立的界面工具更新新闻并公布在站点上.这些都是使用管理界面的样例. 创