Django模板

Django提供了模板,用于编写HTML文件

模板包括:

  • 静态部分:html、css、js。

  • 动态部分:模板语言
    Django处理模板分为两个阶段:

  • 加载:根据给定的路径找到模板文件,编译后放在内存中。

  • 渲染:使用上下文数据对模板插值并返回生成的字符串。

模板语言

  • 变量
  • 标签
  • 过滤器
  • 注释
    变量
    模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
 {{  变量 }}

当模板引擎遇到点 如dog.name,会按照下列顺序解析:

  1. 字典 dog[‘name’]
  2. 先属性后方法,将dog当做对象,查找属性name,如果没有再查找方法name()
  3. 如果是格式为dog.1则解析为dog[1]
    注意:在模板中调用方法时不能传递参数。

例子:编写模型

from django.db import models

class Dog(models.Model):
	name = models.CharField(max_length=128)
	age = models.IntegerField(default=1)
	def show(self):
		return "名字为"+self.name+"年龄为"+str(self.age)

编写试图

def index(rquest):
	dog = Dog.objects.all().first()
	
	ctx = {
		'age': {"count": 12},
        'dog': dog,
        'name': ["laowang", "laosong"],
        'commets': ["我想上一楼", "留给二楼", "四楼想要"],
        'time': datetime.now(),
        'content': 'daskdhaksdhaskjhdkjahskjdhaskjhdjkashkjdhaskh',
        'count': 21,
        'desc': "老王啊"
		}
		return render(request,'index.html',ctx)

编写路由

from  django.urls import path
from . import views

urlpatterns = [
	path(r'',views.index)
]

编写模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>变量</h1>
年龄放按典解析:{{ age.count }}<br>
狗的名字按属性解析:{{ dog.name }}<br>
狗的介绍按方法解析:{{ dog.show }}<br>
名字按列表解析:{{ name.1 }}


</body>

</html>

2.过滤器

  • 使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。
  • 如果过滤器需要参数,则使用冒号:传递参数
变量|过滤器:参数

长度length,返回字符串包含字符的个数。
默认值default,如果变量不存在时则返回默认值

data|default:"默认值"

日期date,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:

  • Y表示年,格式为4位,y表示两位的年
  • m表示月,格式为01,02,12等。
  • d表示日, 格式为01,02等。
  • j表示日,格式为1,2等。
  • H表示时,24进制,h表示12进制的时。
  • i表示分,为0-59。
  • s表示秒,为0-59。
value|date:"Y年m月j日  H时i分s秒"

案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>过滤器</h1>

长度过滤器:{{ commets|length }}<br>
默认过滤器:{{ laowang|default:'没有老王这个字段' }}<br>
不加时间过滤器:{{ time }}<br>
时间过滤器:{{ time|date:'Y年m月j日  H时i分s秒' }}<br>
时间过滤器:{{ time|date:'Y年m月d日' }}<br>
截取过滤器:{{ content|truncatechars:'10' }}
整除过滤器:
{% if count|divisibleby:3 %}
    <h1>能被整除</h1>
{% else %}
    <h1>不能被整除</h1>
{% endif %}

{% load filters %}
无参自定义过滤器:
{% if desc|equals %}
    <h1>就是老王</h1>
{% else %}
    <h1>不是老王</h1>
{% endif %}

有参自定义过滤器:
{% if desc|equals1:'2' %}
    <h1>就是老王</h1>
{% else %}
    <h1>不是老王</h1>
{% endif %}

</body>

</html

注释

在模板中使用如下模板注释,这段代码不会被编译,不会输出到客户端;html注释只能注释html内容,不能注释模板语言。

  • 单行注释
{#  ...  #}
  • 多行注释
{%  comment %}
...
{% endcomment%}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值