首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Django简介与安装
第一个Django项目
Django项目结构解析
模型与数据库设计
Django ORM基础操作
视图与URL配置
模板系统快速入门
表单处理与验证
会话与用户认证
中间件与信号机制
静态文件与媒体管理
Django后台管理
Django通用视图与类视图
数据迁移与模型变更
单元测试与测试驱动开发
错误处理与日志记录
安全性与权限控制
国际化与本地化
Django性能优化
部署与运维
Django源码解析(一):启动流程
Django源码解析(二):请求处理
Django源码解析(三):响应生成
自定义标签与过滤器
高级数据库操作
RESTful API设计与实现
异步任务与消息队列
缓存策略与应用
Django与第三方服务集成
扩展插件开发
数据导入导出与迁移
多数据库支持与数据库路由
高并发与负载均衡
Docker容器化部署
微服务架构与Django
Django与前端框架集成
性能监控与调优
安全性与攻击防范
Django最佳实践
Django生态圈及发展趋势
实战项目一:搭建个人博客系统
实战项目二:开发在线投票系统
实战项目三:构建企业级后台管理系统
实战项目四:实现文件上传与下载功能
实战项目五:开发实时聊天室
实战项目六:构建RESTful API接口
实战项目七:实现用户权限管理系统
实战项目八:开发微信小程序后台
实战项目九:构建电商平台(一):商品管理
实战项目九:构建电商平台(二):购物车与订单
实战项目九:构建电商平台(三):支付与物流
实战项目十:搭建分布式爬虫系统
实战项目十一:实现数据可视化与分析
实战项目十二:开发在线教育平台(一):课程管理
实战项目十二:开发在线教育平台(二):视频点播
实战项目十二:开发在线教育平台(三):直播互动
实战项目十三:构建社交网络(一):用户关系
实战项目十三:构建社交网络(二):信息流与推荐
实战项目十三:构建社交网络(三):朋友圈与评论
实战项目总结与拓展
当前位置:
首页>>
技术小册>>
Django框架入门指南
小册名称:Django框架入门指南
### 模板系统快速入门 在Django框架中,模板系统是一个强大的工具,它允许开发者以简洁、直观的方式将动态内容嵌入到HTML页面中。通过使用模板,你可以将Python代码(主要是视图中的逻辑)与HTML标记分离,从而保持代码的清晰和可维护性。本章将带你快速入门Django的模板系统,包括模板的基本使用、变量、标签、过滤器以及模板继承等核心概念。 #### 一、模板基础 ##### 1.1 模板文件的位置 Django会在项目的`templates`文件夹中查找模板文件。默认情况下,Django会在每个应用的`templates`子文件夹中查找模板,但推荐的做法是在项目根目录下创建一个统一的`templates`文件夹,并在设置文件`settings.py`中通过`TEMPLATES`配置项指定其路径。例如: ```python TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 指定模板文件夹路径 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] ``` ##### 1.2 渲染模板 在Django视图中,你可以使用`render`函数来渲染模板并返回给客户端。`render`函数接受三个主要参数:请求对象、模板名称(或模板名称的列表)以及一个上下文字典,该字典包含了模板中将要使用的变量。 ```python from django.shortcuts import render def my_view(request): # 准备上下文数据 context = {'name': 'Django', 'version': '3.x'} # 渲染模板并返回 return render(request, 'myapp/index.html', context) ``` #### 二、模板变量 模板变量用于在模板中插入动态内容。在模板中,变量被双花括号`{{ }}`包围。当模板被渲染时,Django会查找并替换这些变量为相应的值。 ```html <p>Hello, {{ name }}! You are using Django {{ version }}.</p> ``` 如果变量名与Python的保留字冲突,或者包含空格、点号等特殊字符,可以使用点号`.`来访问对象的属性或字典的键,或者使用下划线`_`作为前缀来避免冲突。 #### 三、模板标签 模板标签用于在模板中执行逻辑操作,如循环、条件判断等。模板标签被大括号`{% %}`包围。Django提供了多种内置标签,如`for`、`if`、`with`等。 ##### 3.1 For循环 `for`标签用于遍历列表、元组、字典等可迭代对象。 ```html <ul> {% for item in item_list %} <li>{{ item }}</li> {% endfor %} </ul> ``` ##### 3.2 If条件判断 `if`标签用于在模板中进行条件判断。 ```html {% if user.is_authenticated %} <p>Welcome, {{ user.username }}.</p> {% else %} <p>Please log in.</p> {% endif %} ``` #### 四、模板过滤器 模板过滤器用于修改变量的值,它们被管道符`|`和过滤器名称包围。Django提供了许多内置过滤器,如`upper`、`lower`、`length`等,也可以自定义过滤器。 ```html <p>The length of the name is {{ name|length }}.</p> <p>The name in uppercase is {{ name|upper }}.</p> ``` #### 五、模板继承 模板继承是Django模板系统的一个强大功能,它允许你创建一个基本的“骨架”模板,该模板包含站点共有的元素(如头部、导航栏、底部等),然后你可以创建继承自这个骨架模板的子模板,只需填充或覆盖特定的块(block)即可。 ##### 5.1 定义基模板 在基模板中,使用`{% block %}`标签定义可以被子模板覆盖的块。 ```html <!-- base.html --> <html> <head> <title>{% block title %}My Site{% endblock %}</title> </head> <body> <header> <!-- 头部内容 --> </header> <main> {% block content %}{% endblock %} </main> <footer> <!-- 底部内容 --> </footer> </body> </html> ``` ##### 5.2 继承基模板 在子模板中,使用`{% extends %}`标签来指定它继承自哪个基模板,并使用`{% block %}`标签来覆盖或添加内容到基模板的相应块中。 ```html <!-- home.html --> {% extends "base.html" %} {% block title %}Home Page{% endblock %} {% block content %} <h1>Welcome to My Site</h1> <p>This is the home page content.</p> {% endblock %} ``` #### 六、自定义模板标签和过滤器 虽然Django提供了丰富的内置模板标签和过滤器,但在某些情况下,你可能需要创建自定义的模板标签或过滤器来满足特定的需求。这可以通过编写Python代码并在Django项目中注册这些自定义标签和过滤器来实现。 ##### 6.1 创建自定义模板标签 1. 在你的应用中创建一个名为`templatetags`的Python包(如果尚未存在)。 2. 在该包内创建一个Python模块(如`__init__.py`和`my_custom_tags.py`)。 3. 在`my_custom_tags.py`中编写自定义标签的逻辑,并使用`@register.tag`或`@register.inclusion_tag`等装饰器注册它们。 4. 在模板中,首先使用`{% load my_custom_tags %}`加载自定义标签,然后即可使用它们。 ##### 6.2 创建自定义模板过滤器 创建自定义模板过滤器的过程与创建自定义模板标签类似,但你需要使用`@register.filter`装饰器来注册过滤器,并在模板中使用管道符`|`来应用它们。 #### 七、总结 Django的模板系统是一个功能强大且灵活的工具,它使得将动态内容嵌入到HTML页面中变得简单而直观。通过本章的学习,你应该已经掌握了模板的基本使用、变量、标签、过滤器以及模板继承等核心概念。接下来,你可以通过实践来加深对这些概念的理解,并探索Django模板系统提供的更多高级功能。记住,模板系统只是Django框架中的一个组成部分,要充分利用Django的强大功能,还需要学习并掌握其他组件,如模型(Models)、视图(Views)、表单(Forms)等。
上一篇:
视图与URL配置
下一篇:
表单处理与验证
该分类下的相关小册推荐:
Django零基础入门
Django快速开发实战