我是一只狗,有什么事吗?我正在挑战Django的模板!
模板= 包含变量和处理的HTML 或者模板= HTML中嵌入了变量和处理
这是我们家的柴犬——胖太。前几天,我假扮成人类与网友聊天,但是渐渐开始怀疑对方可能也是一只假装成人类的狗。我在纠结是否应该揭示真相。
好吧,今天我们来挑战Django的模板。模板是将变量和处理嵌入到Web页面的HTML中,通过插入值来生成显示屏幕。
用于模板的目录结构
在文件夹wan的目录下创建文件夹templates,以及在templates/wan下创建模板文件index.html。树形结构如下。
(venv_dog) Ponta@shiba_app # tree
.
// ... 省略
└── wan
// ... 省略
├── templates
│ └── wan
│ └── index.html
// ... 省略
模板文件的描述(index.html)
我已经按照下面的方式编写了index.html模板。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<p>{{ year }}年{{ month }}月{{ date }}日</p>
<p>{{ description }}</p>
</body>
</html>
在{{ }}中插入变量。这里的变量是title、year、month、date和description。
在views.py文件中调用模板。
模板将从views.py中调用,因此需要将views.py进行如下修改。
from django.shortcuts import render
def index(request, dogname, diarydate):
year = diarydate[:4]
month = diarydate[4:6]
date = diarydate[6:]
title = dogname + "の日記"
description = "今日のご飯は焼肉!"
params = {
'year': year,
'month': month,
'date': date,
'description': description,
'title': title,
}
return render(request, 'wan/index.html', params)
通常,我们会使用django.template.loader.get_template(‘wan/index.html’)来调用模板,然后使用render函数设置模板的变量并返回HttpResponse对象,就像之前那样。但幸运的是,Django提供了一个render()函数的快捷方式,因此我们可以使用它。
render()函数接收三个参数:request对象、模板名称和参数,并进行渲染,返回HttpResponse对象。
Django应用的注册(settings.py)
当在Django中使用模板或者其他情况时,需要在项目中注册使用的应用程序。
因此,我们需要在shiba_app/settings.py文件中的INSTALLED_APP变量中注册wan应用程序。
// ... 省略
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'wan',
]
// ... 省略
正在添加最后一行(’wan’)。
表达测试
昨天的晚餐是烤肉。因为我是狗所以不需要调料。
那就再见啦!汪!
第一次创建 Django 应用程序,第3步编写实际运行的视图。