作者: zifanwang 发布于2020-05-17
重写article/views.py的article_list():
# 文章列表函数
def article_list(request):
# 根据GET请求中查询条件
# 返回不同排序的对象数组
if request.GET.get('order') == 'total_views':
article_list = ArticlePost.objects.all().order_by('-total_views')
order = 'total_views'
else:
article_list = ArticlePost.objects.all()
order = 'normal'
paginator = Paginator(article_list, 3)
page = request.GET.get('page')
articles = paginator.get_page(page)
# 修改此行
context = {'articles': articles, 'order': order}
return render(request, 'article/list.html', context)
'-total_views’为反序,即文章浏览量高的在前面 接下来修改templates/article/list.html:
...
{% block content %}
<div class="container">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="{% url 'article:article_list' %}">
New
</a>
</li>
<li class="breadcrumb-item">
<a href="{% url 'article:article_list' %}?order=total_views">
Hot
</a>
</li>
</ol>
</nav>
<div class="row mt-2">
{% for article in articles %}
...
运行服务器(python manage.py runserver)点击最热查看效果:
可以看见文章排序是按照文章浏览量排序的了
这样最热文章功能就完成了