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

相关推荐
Tech Synapse8 分钟前
基于CARLA与PyTorch的自动驾驶仿真系统全栈开发指南
人工智能·opencv·sqlite
声声codeGrandMaster1 小时前
django之账号管理功能
数据库·后端·python·django
noravinsc1 小时前
django admin 添加自定义页面
django·自定义·admin
Elastic 中国社区官方博客2 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
AscendKing2 小时前
mongo客户端操作mongodb记录
数据库·mongodb
千千寰宇2 小时前
[设计模式/Java] 设计模式之解释器模式【27】
数据库·设计模式
BXCQ_xuan2 小时前
Typecho博客网站头部SEO优化完整指南
运维·服务器·数据库·php·web
广西千灵通网络科技有限公司2 小时前
基于Django的个性化股票交易管理系统
后端·python·django
施嘉伟3 小时前
Oracle 11g RAC手动打补丁详细步骤
数据库·oracle
my_realmy4 小时前
SQL 查询进阶:WHERE 子句与连接查询详解
java·开发语言·数据库·sql