Django模板

DTL

DTL(django template language)是Django自带的模板语言。

  • 模板变量
    {{ 变量 }} 使用双大括号包括,注意左右两边都有空格
  • 模板标签
    {% %} 模板标签包括,写一些语句。
标签作用
{% if %} {% endif %} {% elif %}if语句
{% for %} {% endfor %}循环语句
{% url %}地址
{% extends xx %}模板继承标签,从xx中继承
{% load %}加载相关内容
{% static %}静态资源
{% block %} {% endblock %}占位标签
{% csrf_token %}用来防止跨站伪造攻击
{% include %}包含一个HTML页面

for循环中有一些常用的变量

  1. forloop.counter 当前索引,从1开始
  2. forloop.counter() 当前索引,从0开始
  3. forloop.revcounter 循环剩余的次数
  4. forloop.revcounter() 循环剩余的次数 -1
  5. forloop.first 是否第一次循环
  6. forloop.last 是否最后一次循环
  7. forloop.parentloop 嵌套循环,获取上册循环
  • 过滤器

{{ 变量 | 过滤器:参数 }}

模板作用
safe关闭标签的自动转义
length获取变量的长度
default当变量为False,显示默认值
date日期格式
upper/lower大小写
slice切片 {{ name

例子

app1下的views.py

def var(request):
    lists = ['java', 'Python', "c"]
    dicts = {
        '姓名': "艾希",
        "年龄": 24
    }
    return render(request, 'app1/var.html', {'lists': lists, 'dicts': dicts})

var.html

{{ dicts.姓名 }}
<br />
{% for list in lists %}
<p>{{ list }}</p>
{% endfor %}

在这里插入图片描述

自定义

在对应的app1下新建templatetags文件下,然后新建__init__.py文件和自己创建的过滤器。
在这里插入图片描述
在对应的过滤器中写入,这里对对应的值如果大于传入的参数,则分割加上…来显示

from django import template

register = template.Library()

@register.filter
def show_title(value, n):
    if len(value) > n:
        return f'{value[0:n]}...'
    else:
        return value

对应的模板文件

{% load myfilter %} {{ dicts.标题 |show_title:10 }}

自定义标签和上面的原理一致。

模板继承

新建一个base.html页面作为模板

<html>
  <head></head>
  {% block title %}
  <title>这是母版</title>
  {% endblock %}
  <body>
    <table border="1" style="width: 700px">
      <tr>
        <td colspan="2" style="height: 30px; text-align: center">
          这是top区域,一般用于导航
        </td>
      </tr>
      <tr style="vertical-align: middle; height: 300px">
        <td style="width: 200px">这是左边的菜单</td>
        <td style="width: 500px">
          {% block content %} 这个区域随着内容页的变化而变化 {% endblock %}
        </td>
      </tr>
      <tr>
        <td colspan="2" style="height: 30px; text-align: center">
          这是底部区域,一般用于导航
        </td>
      </tr>
    </table>
  </body>
</html>

新建一个页面,继承base页面。

{% extends "app1/base.html" %} {% block title %}
<title>这是欢迎页面</title>
{% endblock %} {% block content %}
<div style="text-align: center">欢迎来到我的特色小店</div>
{% endblock %}

新建路由,测试,也可使用{% include %}
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的天才女友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值