我是一只狗,有什么事吗?我正在挑战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’)。

表达测试

スクリーンショット 2020-08-26 7.01.00.png

昨天的晚餐是烤肉。因为我是狗所以不需要调料。
那就再见啦!汪!

第一次创建 Django 应用程序,第3步编写实际运行的视图。
广告
将在 10 秒后关闭
bannerAds