深入Django(四)

简介: **Django模板系统**简介:用于结合数据与HTML,生成网页内容。模板系统让动态数据能插入静态页面,模板语言支持Python代码嵌入。创建模板涉及在应用目录下建立`templates`文件夹及编写HTML。使用时,视图通过`render`函数加载模板,URL配置指向相应视图。模板语言包含控制结构(如if、for)、过滤器(如日期格式化、字符串截取)和自定义过滤器。模板继承则促进布局一致性,允许子模板扩展基础模板。模板系统简化了Django中的动态内容渲染。

Django模板系统

引言

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

Django模板系统概述

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

创建模板

  1. 创建模板文件:在你的Django应用目录下,创建一个名为templates的文件夹。Django会自动在这个文件夹中查找模板文件。
  2. myapp/├── templates/ │   └── base.html └── ...
  3. 编写模板:在templates文件夹中,创建一个HTML文件并编写你的模板。
  4. <!-- templates/base.html --><!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <h1>Welcome to my site</h1>    {% 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 in</p>{% 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. <!-- templates/home.html -->{% extends 'base.html' %} {% block content %}<h2>Welcome to the Home Page</h2>{% endblock %}

总结

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

相关文章
|
9月前
|
Python
Django由一查多
Django由一查多
|
1月前
|
SQL 数据库 数据库管理
深入Django(七)
Django的数据库迁移系统是管理数据库模式变化的关键组件,自动化创建、修改和删除表及字段。它提供版本控制,便于团队协作。通过`makemigrations`生成迁移文件,`migrate`应用到数据库。迁移支持依赖关系和数据迁移功能,允许填充初始数据或执行数据转换。这个系统简化了数据库管理,促进了开发中的数据一致性。
28 5
|
1月前
|
Python
深入Django(五)
Django的URL路由系统将URL映射到视图。创建URLconf涉及编写视图、定义URL模式(如`home`和`about`)并在项目主`urls.py`中包含应用URL。动态URL模式允许捕获数据,如`post/&lt;int:post_id&gt;/`,并在视图中使用。命名URL便于模板和视图中引用,通过`{% url %}`模板标签或`reverse`函数。正则表达式用于更复杂URL模式匹配。URL路由是Django中组织请求与响应的核心机制。
30 4
|
1月前
|
数据库 Python
深入Django(八)
了解Django的管理后台,它是一个用于管理应用数据的内置Web界面。要启用它,需在`admin.py`中注册模型,创建超级用户,并访问服务器的`/admin/`路径。可自定义后台,如定义模型显示(通过`list_display`, `list_filter`, `search_fields`),定制表单界面(定义表单类和覆盖字段)以及进行高级定制,如字段选项和重写方法。管理后台支持添加、编辑和删除记录,以及批量操作。
23 2
|
10月前
|
Python
初识Django
初识Django
50 0
|
设计模式 缓存 前端开发
Django——小结
 Python的WEB框架有Django、Tornado、Flask 等多种,Django是重量级选手中最有代表性的一位,它的优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。
114 0
Django——小结
|
数据库 数据安全/隐私保护 Python
|
Python
Django 项目重命名
  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。 1.修改项目名称,使用 pycharm -> refactor 重命名整个项目。   2.修改 manage.py 和 Django 下和项目名称相同的文件夹,使用 grep 指令找出和项目有关的字符串,如: grep 'test4' *.py 逐一修改。
4532 0
|
前端开发
Django-SerializerMethodField
DRF-Serializer-SerializerMethodField,更加灵活的修改返回给前端的数据
|
Web App开发 前端开发 数据库
Django中的ModelForm
一、ModelForm的基本用法示例: from django import forms from app01 import models class BookModelForm(forms.
1157 0