深入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中渲染动态内容的关键部分,它使得前端开发变得更加简单和高效。

相关推荐
计算机平台作业答案讲解1 小时前
QT实现GIF动图显示(小白版,可直接copy使用)
服务器·开发语言·数据结构·数据库·c++·qt·动态规划
誰能久伴不乏1 小时前
使用 Qt 实现自定义拖动窗口
开发语言·数据库·qt
TriplesGoldWater1 小时前
MySQL期末答辩—仓库管理系统
android·数据库·mysql
fmk10232 小时前
从0开始搭建Spring-Cloud微服务项目
数据库·mysql
毕小宝2 小时前
H2 Database Console未授权访问漏洞封堵
数据库·h2
Rverdoser2 小时前
Mongodb地理信息数据查询
数据库·mongodb
chenyang_882 小时前
MySQL——statement对象详解
数据库·mysql·oracle
#学习的路上2 小时前
Bean的管理
java·前端·数据库
a_zhee13 小时前
[Redis]哨兵机制
数据库·redis·缓存
GodGump3 小时前
DB-GPT 文档切分报错
数据库·gpt