一、改写视图函数
之前初步探索了视图的工作流程。为了让视图发挥真正作用,现对article/views.py
中的article_list
视图函数进行改写:
-
from .models import ArticlePost
:从models.py
中导入ArticlePost
数据类; -
articles = ArticlePost.objects.all()
:数据类的方法,可以获得所有的对象,并传递给articles
变量; -
context
:定义了需要传递给模板的上下文,这里即articles
; - 最后返回了
render
函数。它的作用是结合模板和上下文,并返回渲染后的HttpResponse
对象。通俗的讲就是把context的内容,加载进模板,并通过浏览器呈现出来。
render
的变量分解如下:
- request是固定的
request
对象,照着写即可; -
article/list.html
定义了模板文件的位置、名称; -
context
定义了需要传入模板文件的上下文;
二、编写模板(templates)
上面改写视图函数时,我们定义了模板的位置在article/list/html
,因此需要在根目录下新建templates
文件夹,再新建article
文件夹,再新建list.html
文件,即:
并在list.html
中写入:
Django通过模板来动态生成HTML,其中就包含描述动态内容的一些特殊语法:
-
{{ % for article in articles % }}
:articles
为视图函数的context
传递过来的上下文,即所有文章的集合。{% for %}
循环表示依次取出articles
中的元素,命名为article
,并分别指向接下来的操作。末尾用{% endfor %}
告诉Django循环结束的位置; - 使用
.
符号来访问变量的属性。这里的article
为模型中的某一条文章;我们在模型的ArticlePost
中定义了文章的标题叫title
,正文叫body
,因此这里可以用article.title
来访问文章的标题,用article.body
来访问文章的正文; -
<h1> . . . </h1>和<p> . . . </p>
是html标签;
三、设置模板位置
上面我们在根目录新建了templates/article/list.html,所以需要告诉Django模板的位置在哪,否则就找不到。
打开setting.py
,它保存了Django项目的各种初始配置:
四、查看效果
启动服务器,在虚拟环境下,输入:
打开浏览器,输入地址:http://127.0.0.1:8000/article/article-list/
: