Django学习教程(十四)使用模板系统渲染博客页面
前言
上一篇我们学习了Django模板系统的基本使用,可以把后端数据传递到HTML页面中。这一篇我们继续完善博客列表页面。
这次我们会从数据库中查询文章数据,然后使用模板中的for循环,把文章列表展示到页面上。
1.查询文章数据
打开views.py文件,编写文章列表视图。
代码:
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'blog/article_list.html', {'articles': articles})
这里查询所有文章,并把articles传递给模板。
2.创建模板文件
在blog/templates/blog目录下创建article_list.html。
代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Django博客</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<h2 class="mb-4">Django博客</h2>
{% for article in articles %}
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title">{{ article.title }}</h5>
<p class="card-text">{{ article.content }}</p>
</div>
</div>
{% endfor %}
</div>
</body>
</html>
{% for article in articles %}表示遍历文章列表。
{``{ article.title }}表示显示文章标题。
{``{ article.content }}表示显示文章内容。
3.配置路由
打开urls.py文件。
代码:
from django.contrib import admin
from django.urls import path
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.article_list),
]
4.访问页面
浏览器访问:
http://127.0.0.1:8000/
如果页面显示了数据库中的文章列表,说明模板渲染成功。
5.文章排序
如果想让最新的文章显示在前面,可以修改查询代码。
代码:
articles = Article.objects.all().order_by('-created_time')
完整代码:
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all().order_by('-created_time')
return render(request, 'blog/article_list.html', {'articles': articles})
-created_time表示按照创建时间倒序排序。
6.总结
这一篇我们学习了怎样使用Django模板系统渲染博客文章列表。视图函数负责查询数据,模板负责显示数据。
在模板中可以使用for循环遍历数据,也可以使用{``{ }}显示变量。好了这一篇就到这里,下一篇我们继续学习文章详情页面跳转,如果对你有帮助,点赞加关注,下篇见。