深入Django(四)

Django模板系统

引言

在之前的几天中,我们介绍了Django的基本概念、模型和视图。今天我们将探讨Django的模板系统,它负责将数据和HTML模板结合起来,生成最终用户看到的内容。

Django模板系统概述

Django的模板系统是一个强大的工具,用于将动态数据插入到静态或半静态的页面中。它使用自己的模板语言,允许你在HTML中嵌入Python代码。

创建模板

  1. 创建模板文件 :在你的Django应用目录下,创建一个名为templates的文件夹。Django会自动在这个文件夹中查找模板文件。
  2. myapp/├── templates/ │ └── base.html └── ...
  3. 编写模板 :在templates文件夹中,创建一个HTML文件并编写你的模板。
  4. DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Titletitle>head><body> <h1>Welcome to my siteh1> {% block content %} {% endblock %}body>html>
  5. 在这个例子中,{% block content %}是一个占位符,它允许子模板覆盖或扩展这个部分。

使用模板

  1. 在视图中加载模板 :使用render函数来加载模板并传递数据。
  2. from django.shortcuts import renderdef home(request): context = {'name': 'Django'} return render(request, 'home.html', context)
  3. 配置URL:确保你的URL配置指向正确的视图。
  4. from django.urls import pathfrom .views import homeurlpatterns = [ path('', home, name='home'),]

Django模板语言

Django模板语言提供了许多控制结构,如if语句、for循环等,以及过滤器和标签。

控制结构
  • If语句:根据条件渲染内容。
  • {% if user.is_authenticated %} <p>Welcome, {``{ user.username }}!p>{% else %} <p>You are not logged inp>{% endif %}
  • For循环:遍历列表或查询集。
  • <ul>{% for post in posts %} <li>{``{ post.title }}li>{% endfor %}ul>
过滤器

过滤器可以用来修改变量的值。

  • 日期格式化
  • <p>Posted on: {``{ post.published_date|date:"D, d M Y" }}p>
  • 字符串截取
  • <p>Short title: {``{ post.title|truncatewords:10 }}p>
自定义过滤器

你还可以创建自定义过滤器。

  1. 创建自定义过滤器 :在你的应用目录下,创建一个templatetags文件夹,并在其中创建一个__init__.py文件和一个Python文件,比如custom_filters.py
  2. myapp/├── templatetags/ │ ├── __init__.py │ └── custom_filters.py └── ...
  3. 编写自定义过滤器
  4. # custom_filters.pyfrom django import templateregister = template.Library()@register.filterdef add(value, arg): try: return int(value) + int(arg) except ValueError: return value
  5. 在模板中使用自定义过滤器
  6. {``{ 5|add:"3" }}

模板继承

模板继承允许你创建一个基础模板,并让其他模板继承它,这样你可以保持一致的布局和样式。

  1. 创建基础模板 :我们已经在上文中创建了一个基础模板base.html
  2. 创建子模板:创建一个子模板,继承并扩展基础模板。
  3. {% extends 'base.html' %} {% block content %}<h2>Welcome to the Home Pageh2>{% endblock %}

总结

在今天的教程中,我们学习了Django模板系统的基本概念,包括如何创建模板、使用模板、Django模板语言的控制结构、过滤器以及模板继承。模板系统是Django中渲染动态内容的关键部分,它使得前端开发变得更加简单和高效。

相关推荐
tatasix11 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。24 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了25 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度27 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮29 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
陈王卜2 小时前
django+boostrap实现发布博客权限控制
java·前端·django
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring