djiango模板

10 篇文章 0 订阅

1. 模板文件的使用

静态部分,包含html、css、js。
动态部分,就是模板语言

render方法实现的步骤

def my_render(request):
    # 1.加载模板文件,获取一个模板对象
    temp = loader.get_template('booktest/index.html')
    # 2.定义模板上下文,给模板传参数
    context = RequestContext(request,{})
    # 3.模板渲染
    res_html = temp.render(context)
    # 4.返回应答
    return HttpResponse(res_html)

2.模板文件加载顺序

1)首先去配置的模板目录下面去找模板文件。
2)去INSTALLED_APPS下面的每个应用的templates去找模板文件,前提是应用中必须有templates文件夹。

3.模板变量

模板变量名是由数字,字母,下划线和点组成的,不能以下划线开头。
使用模板变量:{{模板变量名}}
模板变量的解析顺序:
例如:{{ book.btitle }}

  1. 首先把book当成一个字典,把btitle当成键名,进行取值book[‘btitle’]
  2. 把book当成一个对象,把btitle当成属性,进行取值book.btitle
  3. 把book当成一个对象,把btitle当成对象的方法,进行取值book.btitle

例如:{{book.0}}

  1. 首先把book当成一个字典,把0当成键名,进行取值book[0]
  2. 把book当成一个列表,把0当成下标,进行取值book[0]

如果解析失败,则产生内容时用空字符串填充模板变量。
使用模板变量时,.前面的可能是一个字典,可能是一个对象,还可能是一个列表。

4.模板标签

{% 代码段 %}
for循环:

	{% for x in 列表 %}
	# 列表不为空时执行
	{% empty %}
	# 列表为空时执行
	{% endfor %}
可以通过{{ forloop.counter }}得到for循环遍历到了第几次。

if标签语法如下:

{% if 条件 %}
{% elif 条件 %}
{% else %}
{% endif %}

比较运算符如下:

关系比较操作符:> < >= <= == !=
注意:进行比较操作时,比较操作符两边必须有空格。
逻辑运算:not and or

过滤器

过滤器用于对模板变量进行操作。
date:改变日期的显示格式。
length:求长度。字符串,列表.
default:设置模板变量的默认值。
格式:模板变量|过滤器:参数
自定义过滤器。
自定义的过滤器函数,至少有一个参数,最多两个
参考资料:(模板标签和内置过滤器)链接

<head>
    <title>过滤器</title>
</head>
<body>
<ul>
    {%for book in list%}
        {%if book.btitle|length > 4%}
            <li style="background-color: red;">
                {{book.btitle}}
                ---默认时间格式为:
                {{book.bpub_date}}
            </li>
        {%else%}
            <li style="background-color: green;">
                {{book.btitle}}
                ---格式化时间为:
                {{book.bpub_date|date:"Y-m-j"}}
            </li>
        {%endif%}
    {%endfor%}
</ul>
</body>
</html>

自定义过滤器

在应用中创建templatetags目录,当前示例为"booktest/templatetags",创建_init_文件,内容为空
在这里插入图片描述
在"booktest/templatetags"目录下创建filters.py文件,代码如下:

#导入Library类
from django.template import Library

#创建一个Library类对象
register=Library()

#使用装饰器进行注册
@register.filter
#定义求余函数mod,将value对2求余
def mod(value):
    return value%2 == 0

首先使用load标签引入模块

{%load filters%}

使用:

<!DOCTYPE html>
<html lang="en">
{% load filters %}
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<ul>
    {% for my in my_list %}
        {% if my|mod %}
            <li> {{ my }} </li>
        {% endif %}
    {% endfor %}
</ul>

</body>
</html>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值