Django templates

模版配置

setting.py文加下配置

TEMPLATES = [
    {
        # Django默认模版引擎
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 模版文件
        'DIRS': [
            os.path.join(BASE_DIR, 'template')
        ],
    },
]

常用语法

变量相关的用{{ 变量 }},逻辑相关的用{% 标签 %}

views

def template_test(request):
    name = 'Tom'
    age = 18
    gender='男'
    return render(request, 'template_test.html',locals())

html

<body>
{{name}}-{{age}}-{{gender}}
</body>
Filter 过滤器
default 默认值
{{ value|default:'默认值'}}
length 数据长度
{{ value|length }}
filesizeformat 文件大小
{{ value|filesizeformat}}
slice 切片
{{value|slice:'1:4'}}
date 格式化日期
{{time|date:'Y-m-d H:i:s'}}
safe 安全转义
{{tag|safe}}
truncatechars 多于指定数量显示省略号…
{{value|truncatechars:3}}
cut 移除指定字符串
{{value|cut:'m'}}
自定义filter
  1. 在app目录下新建templatetags目录(名字唯一)
  2. templatetags下创建任意py’文件
  3. 创建register对象(名字唯一)
from django import template

register = template.Library()  # 对象名必须为register

@register.filter(name='myjoin')
def my_join(arg, arg2):
    return arg + '-' + arg2
  1. settings.py注册app
INSTALLED_APPS = [
   ...
    'app.apps.AppConfig',
]
  1. 使用
{% load myfilter %}}
{{name|myjoin:'hello'}}
标签
for 循环
<ul>
    {% for name in name_list%}
    <li>{{name}}</li>
    {% endfor %}
</ul>

for循环可用的一些参数

VariableDescription
forloop.counter当前循环的索引值(从1开始)
forloop.counter0当前循环的索引值(从0开始)
forloop.revcounter当前循环的倒序索引值(从1开始)
forloop.revcounter0当前循环的倒序索引值(从0开始)
forloop.first当前循环是不是第一次循环(布尔值)
forloop.last当前循环是不是最后一次循环(布尔值)
forloop.parentloop本层循环的外层循环

for … empty

<ul>
{% for user in user_list %}
    <li>{{ user.name }}</li>
{% empty %}
    <li>空空如也</li>
{% endfor %}
</ul>

母版

子页面继承母版

{% extends 'base.html' %}

母版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}base{% endblock %}</title>
</head>
<body>

{% block header %}
{% endblock %}

{% block main %}
{% endblock %}

{% block footer %}
{% endblock %}

</body>
</html>

子页面

{% extends 'base.html' %}

{% block title %}
标题信息
{% endblock %}

{% block header %}
<h1>头部信息</h1>
{% endblock %}

{% block main %}
<p>正文</p>
{% endblock %}

{% block footer %}
<div>结尾</div>
{% endblock %}

加载静态文件

配置

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
<!--方式一-->
<img src="/static/img/hello.jpg"/>

{% load static %}
<!--方式二-->
<img src="{% static 'img/hello.jpg'%}">

<!--方式三-->
<img src="{% get_static_prefix %}img/hello.jpg"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值