Django入门第八章、模板引擎设置

网友投稿 767 2022-05-30

第八章目录

第八章、模板引擎设置

回顾

显示文章标题

创建home.html文件

创建home视图:

更新urls:

Final成果

第八章、模板引擎设置

回顾

要显示文章标题,就要把标题从数据库中先读取出来。我们在创建BlogArticles模型时,有一个专门的title字段存储文章标题,那么怎么读取到它呢?通过前面学习笔记,

一种是通过SQL语句进行查询 – select语句

另一种就是通过django自带的API进行读取,这个功能强大的API还可以创建、获取、修改和删除对象

显示文章标题

在manage.py所在的目录创建一个名为 templates的新文件夹:

myblog/ | |-- blog | |-- myblog/ | |-- templates/ <-- 这里 | +-- venv/ | +-- db.sqlite3 | +-- manage.py

1

2

3

4

5

6

7

8

建立的目录如下图:

创建home.html文件

然后在templates文件夹中,创建一个名为home.html的HTML文件:

templates/home.html

我的博客

我的博客

{% for blog in blogs %}
  • {{ blog.title }}

  • {% endfor %}

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    在home中,我们使用了原始HTML和一些特殊标签 {% for ... in ... %} 和 {{ variable }} 。它们是Django模板语言的一部分。

    Django模板语言都需要用到{}花括号,块标签{%block name %},用来包裹块内容,表示其间的内容可以自定义,name是块的名称。块结束标签{% endf-block%}。

    上面的例子展示了如何使用 for遍历列表对象,这一点类似Python的循环语句,{% for blog in blogs %}是循环的开始,{% endfor %}是本循环结束。

    {{ blog.title }}双层花括号的方式表示此处显示变量引用的数据。blog是从blogs的QuerySet序列中得到的一个实例对象,blog.title是某个实例的title字段,我们通过这种方式获得一片博客的标题,最后生成动态HTML文档。

    在使用这个HTML页面之前,我们必须告诉Django在哪里可以找到我们应用程序的模板(注:如果是利用Pycharm创建的Django项目,则会自动生成templates)。

    打开myproject目录下面的settings.py文件,搜索TEMPLATES变量,并设置DIRS 的值为 os.path.join(BASE_DIR, 'templates'):

    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

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    创建home视图:

    在我们完成对home模板创建完成后,接下来开始写home()函数:

    blog/views.py

    from django.shortcuts import render from .models import BlogArticles # Create your views here. def home(request): blogs = BlogArticles.objects.all() return render(request, "home.html", {"blogs":blogs})

    1

    2

    3

    4

    5

    6

    7

    8

    还记得当初第三章中写HelloWorld页面时编写的welcome()函数吗?同样,home()是在视图文件views.py中编写的一个函数,这种方式被称为“基于函数的视图”,这个函数就叫“视图函数”,后面还将学到“基于类的视图”。

    为了响应用户请求,然后我们利用前面交互模式中使用的语句blogs = BlogArticles.objects.all(),得到所有的BlogArticles类实例。

    然后再以return结束当前函数,并返回结果。

    render()的作用是将数据渲染到指定模板,第一个参数必须是request,然后是模板位置和所传送的数据,数据是用类字典的形式传送给模板的。

    home.html就是展示标题列表的前端页面–被称为“模板”。在每一个应用中都可以有一个专门的模板目录,这个目录的名称必须是templates。

    {"blogs":blogs}向模板文件home.html中传入blogs变量所引用的QuerySet对象,其包含所有BlogArticles类的实例对象,即从数据库中读取所有记录,并在模板文件中以变量blogs({"blogs":blogs})中的键blogs来代表。

    更新urls:

    函数和模板都写好了之后,我们还需要做一项工作,就是进行URL配置,相信大家在学完第三章后应该知道在哪个文件中进行URL配置了吧,对就是myblog/urls.py文件中。增加如下新增代码:

    myblog/urls.py

    from django.contrib import admin from django.urls import path from django.conf.urls import url # 新增 from blog import views # 新增 urlpatterns = [ path('admin/', admin.site.urls), url(r'^$', views.home, name='home'), # 新增 ]

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    Django入门:第八章、模板引擎设置

    Final成果

    最后在浏览器中打开 http://127.0.0.1:8000/,结果如下图,能一个简单的HTML页面展示:

    可以看到,自己创建的博客文章标题已经显示在浏览器中,相信到这一步你已经激动不已(笔者也是)。细心的读者可以会问了,只是展示了标题,可是并不能通过点击博客文章标题查看博客内容,对,下一章的任务就是带领大家完成查看博客文章。

    注:Django入门笔记汇总博客

    Django HTML

    版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

    上一篇:初识 torch.Autograd | 理解pytorch网络训练过程 | 笔记
    下一篇:使用ABAP代码提交 CRM Survey调查问卷
    相关文章