惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
腾讯CDC
G
Google Developers Blog
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
有赞技术团队
有赞技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
美团技术团队
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
Django 4.2 复习笔记(七)Django 模板(TEMPLATES)
J.sky · 2023-06-03 · via 碎言

作为一个网络框架,Django 需要一种方便的方式来动态生成 HTML,最常见的方法是依靠模板,一个模板包含了所需HTML输出的静态部分,以及一些特殊的语法,描述了如何插入动态内容。

配置Django模板引擎

配置Django模板引擎:在Django项目的设置文件中(settings.py),确保’Django.template.backends.django.DjangoTemplates’引擎被包含在TEMPLATES设置的’BACKENDS’中。

这是Django创建项目后默认的模板配置:

TEMPLATES = [
    {
        'BACKEND':  'django.template.backends.django.DjangoTemplates',
        'DIRS':     [],
        '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',
            ],
        },
    },
]

下面是修改添加并设置了模板目录的配置项:

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',
            ],
        },
    },
]

告诉Django要启用Django自带的模板引擎。

"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,

指定模板文件的存放目录为项目的子目录下templates

'DIRS': [os.path.join(BASE_DIR, 'templates')],# 修改位置

至此,Django模板就配置好了。

使用Django的模板

在模板文件(例如,template.html)编写模板文件:

<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
    {% if age %}
        <p>Your age is {{ age }}.</p>
    {% else %}
        <p>Your age is not specified.</p>
    {% endif %}
</body>
</html>

配置好路由:

urlpatterns = [
    path("", views.index, name="index"),
    path("test_view/", views.test_view, name="test_view"),
]

在上述示例中,视图函数test_view创建了一个包含’title’、‘name’和’age’的上下文对象。然后使用render函数将模板文件名、上下文对象和请求作为参数传递。最后Django将渲染模板并返回最终的HTML响应。

我们启动Django的服务器来进行测试:python manage.py runserver

我们就可以正常的看到模板渲染出来的页面了。

总结

以下是使用Django模板的基本步骤:

  1. 配置Django模板引擎:在Django项目的设置文件中(settings.py),确保’Django.template.backends.django.DjangoTemplates’引擎被包含在TEMPLATES设置的’BACKENDS’中。

  2. 创建模板文件:在Django项目的一个目录中,创建一个包含HTML代码的模板文件。通常,模板文件位于一个名为’templates’的子目录中。

  3. 定义模板变量:在模板中,可以使用双大括号({{ variable_name }})来包围变量名,以将其插入到模板中。

  4. 控制流和逻辑:在模板中,可以使用控制结构(如if语句和for循环)来控制显示的内容。

  5. 继承和包含:Django模板还支持模板继承和包含,可以在一个模板中使用{% extends %}和{% include %}指令来重用和组合模板代码。

  6. 上下文传递:在Django视图函数中,可以通过上下文对象将数据传递给模板。上下文对象是一个包含键值对的字典,其中键是在模板中使用的变量名称,值是要传递给模板的实际数据。

  7. 渲染模板:在Django视图函数中,使用Django的渲染器(render)将模板和上下文对象结合起来,生成最终的HTML响应。

参考文档:

Django 模板

Django 模板 官方文档

模板配置文件选项设置 官方文档