文章目录

  • templates介绍
  • 概述
  • 详解Django模板语言
  • 逻辑标签
  • 内置的标签
  • 变量
  • 模板变量
  • 过滤器(写在html文件中的,是django的模板语言)
  • 自定义过滤器
  • 常用内置过滤器
  • 配置一个html页面显示的步骤
  • templates使用
  • templates查找文件的路径


templates介绍

1.templates翻译为模板
2.templates即是html文件,它使用了Django模板语言
3.它也可使用第三方模块如jinja2

概述

  1. Django Template负责整个表现逻辑,通过内置的模板语言结合HTML文件,为用户呈现Web内容;
  2. Template模板系统是一个独立的语言库,所以除了与HTML文件结合,也可以与其他文本格式的文档结合,甚至可以独立运行;
  3. Template模板系统通过模板标签、过滤器、流程控制语句、模板继承等方式,实现了Web页面的动态展现。

template ftl文件循环 templates文件_django

详解Django模板语言

逻辑标签

{ if }{endif}进行逻辑判断

{ if request.user }
	<div class='top1'></div>
{ elif }
	<div class='top2'></div>
{ endif }
  • 通过 {% if %} 判断是否为真,如果是为真,执行第一个div代码块;
  • 如果为假,执行第二个div代码快,最终通过 {% endif %} 结束判断语句;

{ for } 循环

{ for user in all_user }
	<p>all_user.user</p>
{endfor}

说明:

  • Django模板文件除了if和for两种逻辑语句之外,不支持其他复杂的语句,更不支持直接调用Python语言;
  • 这与Django的设计理念有关,Django里面限制了我们不能在模板层过多地使用Python代码以及逻辑,因为如果过多的在模板层使用逻辑,这将会在后期维护的时候很困难
内置的标签

template ftl文件循环 templates文件_html_02

变量

template ftl文件循环 templates文件_template ftl文件循环_03

模板变量

{{ }}用于存储模板变量,变量内容可以直接从views函数获取,也可以通过if/for标签来获取
{% url ' url_name ' %}跳转到特定url映射的模板变量,变量内容由url_name决定

<a href='{% url 'index'%}>首页</a>
<form method="post" action="{% url 'delete' %}">
过滤器(写在html文件中的,是django的模板语言)
自定义过滤器

简介:过滤器即在变量后面加上管道符和过滤关键词,可以对模板变量的内容做进一步的操作。

创建方法:

  • 在应用下创建template文件夹
  • 在文件夹下创建myfilter.py
    例子:
from django import template
register = template.Library()  # 定义过滤器
@register.filter
def test_filter(value, args):
    return value + args

{% load myfilter %}
{{data | test_filter: 3}}
常用内置过滤器

template ftl文件循环 templates文件_html_04

template ftl文件循环 templates文件_template ftl文件循环_05

配置一个html页面显示的步骤

1.配置url
2.配置对应的views视图逻辑
3.拆分静态文件(static,css,js)到static,html放入到template之下
1.可以放到对应的app下面
2.也可以放入到全局的template和目录之下
4.配置全局的static文件访问路径的配置STATICFILE_DIRS(自己加上的参数)

templates使用

1.在app目录下创建一个templates文件夹,然后在templates文件夹下创建另一个文件夹(名字为app名)

2.在该文件夹下创建一个Html文件,编辑HTML文件

template ftl文件循环 templates文件_django_06


4。编辑views.py,这里需要使用render,render翻译为渲染

template ftl文件循环 templates文件_html_07


render()函数介绍:

  1. 第一个参数为请求request,是必须填的,request代表了HTTP的一个请求对象
  2. 第二个参数为我们的HTML文件的路径,也是必填
  3. 第三个参数为我们后台传到前端的数据,是选填,这是一个支持字典类型的参数,该字典是后台传递到前端(模板)的参数,键为参数名,模板(HTML文件)中使用{{ 参数名 }}直接调用

5.打开浏览器输入对应网址就可以访问,如下图,可以显示HTML页面

template ftl文件循环 templates文件_html_08

因为我后面没有在templates目录下使用那个app文件夹,所以网址后面不用加/app

templates查找文件的路径

1.Django按照INSTALLED_APPS的添加顺序查找templates
2.templates文件夹下的同名HTML文件会冲突
说明
这就是上面创建templates目录之后还要在templates目录下创建app目录的原因