前端篇—模板语言

本文主要介绍了前端开发中的Django模板语言,包括基本语法如{{ 变量 }}和{% 语句 %},万能的句点.用于访问对象属性,以及管道符|的应用。还讲解了如何自定义模板templatetags,并提供了实例说明。同时,讨论了HTML模板的创建和使用,以及模板的继承机制。

前言

模板语言:html + 逻辑控制语句

Django模板基本语法

# bash
python manage.py shell	#  进入django命令行

# django
from django.template import Context, Template
t = Template('Welcome {{ name }}!')	# html模板
c = Context({'name': 'wolf'})		# 设置渲染对象
t.render(c)		// 渲染
# --> Welcome wolf!
  1. {{ 变量 }}
  2. 万能的句点 .
    render传过来的对象,字典,类,列表的属性都可以直接使用
  3. {% 语句 %}
  • 判断
{% if True %}	# if 后只能跟布尔值,
# your code...
{% elif %}
# your code...
{% else %}
# your code...
{% endif %}
  • 循环
{% for i in obj %}	# 遍历django中rander传过来的可遍历对象
# your code...
{% endfor %}
# i 为值
# 获取索引
{{ forloop.counter }}	# 索引从1开始
{{ forloop.counter0 }}	# 从0开始索引
{{ forloop.revcounter }}	# 索引从高到低,值正常的从低到高
  1. 管道符 |(filter)
{{ obj|upper }} 	# 对obj中的值都使用upper方法
{{ obj|lower }}
{{ obj|first|upper }}	# 去除第一个字母,再大写
{{ obj|capfirst }}	# 首字母大写
{{ obj|add:5 }}		# 加5
{{ obj|cut:' ' }}	# 删除字符中的空格
{{ obj|date:'Y-m-d' }}
{{ obj|default:'空的' }}	# 数据为空时,以默认的‘空的’代替
  1. 特殊
# 告诉浏览器语句是安全的,浏览器会将传过来的字符串中的html渲染
{% autoescape off %}

# your code...
{% endautoescape %}
{{ var|safe }} # 跟上面的作用一样
{{ var|slice:':-2'}}	# 切片
{{ var|filesizeformat }}	# 大小
{{ var|length }}	# 长度
{{ var|urlencode }}
{{ var|truncatechars:'6' }}	# 截取6个字符
{{ var|truncatewords:'6' }}	# 截取6个单词

<form>
	<input>
	{% csrf_token %}	# 解决forbidden错误,如果用render_to_response()须要另外加一个参数
</form>

<form action={% url %}>		# 别名(alias)

{% load temp_name %}	# 加载标签库,加载自定义模板

{% with total=sadasdasfqwdad %}{{ total }}{% endwith %}
# 用简单的变量名代替复杂的变量名

{% verbatim %}		# 禁止render
{{ asjdi }}	# 直接输出{{ asjdl }}
{% endverbatim %}

自定义模板templatetags

在app文件夹下添加文件夹templatetags
在这个文件夹下写自定义模板

  1. 方法,可以传个参数,但不能放在if下作为条件
# FILE:/templatetags/my_tags.py

from django import template
from django.utils.safestring import mark_safe

register = template.Library()
# 创建自定义模板
@register.simple_tag
def my_add(s):
    return s+100
{% load my_tags %}		// 加载自定义模板
<html>

<p>
{% my_add 100 %}		<!--浏览器输出200-->
</p>

用tag方法:
在这里插入图片描述
浏览器输出:

在这里插入图片描述

  1. filter
@register.filter	# 引入跟第一种方法一样,只需要将simple_tag改成filter
def my_add_2(s):
    return s+100

使用filter方法:
在这里插入图片描述
导入一个变量num=3:
在这里插入图片描述
浏览器输出:
在这里插入图片描述

传入参数,最多传入2个参数

@register.filter	# 引入跟第一种方法一样,只需要将simple_tag改成filter
def my_add_2(s, s2):
    return s+100+s2
{{ num|my_add_2:12 }}	

在这里插入图片描述

HTML模板

  1. 创建模板
<!-- FILE:base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% block content %}
    
        
    {% endblock %}
</body>
</html>
  1. 使用模板
{% extends 'base.html' %}	<!--必须放在最前面-->

{% block content %}
<div></div>		<!--这里的html部分会代替到模板的block区-->
{% endblock %
  1. 使用模板中本来有的html,继承
{% extends 'base.html' %}	<!--必须放在最前面-->

{% block content %}
{% block:super %}  <!--继承原来block中的html-->
<div></div>		<!--这里的html部分会代替到模板的block区-->
{% endblock %
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值