十五、Django2.1 搭建多用户的博客网站——文章模块小结
2019-02-17 本文已影响51人
27efec53a72d
目录:Django 2.1 从零开始搭建博客网站系列
服务器环境搭建(选学)
小试牛刀——简单的博客网站
庖丁解牛——多用户的博客网站之用户模块
- 三、Django2.1 搭建多用户的博客网站——登录
- 四、Django2.1 搭建多用户的博客网站——注册
- 五、Django2.1 搭建多用户的博客网站——修改密码
- 六、Django2.1 搭建多用户的博客网站——重置密码
- 七、Django2.1 搭建多用户的博客网站——维护个人详细信息
- 八、Django2.1 搭建多用户的博客网站——头像上传
- 九、Django2.1 搭建多用户的博客网站——用户模块小结
庖丁解牛——多用户的博客网站之文章模块
- 十、Django2.1 搭建多用户的博客网站——文章栏目
- 十一、Django2.1 搭建多用户的博客网站——简单的文章发布
- 十二、Django2.1 搭建多用户的博客网站——使用Markdown发布文章
- 十三、Django2.1 搭建多用户的博客网站——修改和删除文章
- 十四、Django2.1 搭建多用户的博客网站——向用户展示文章
- 十五、Django2.1 搭建多用户的博客网站——文章模块小结
华丽转身——多用户的博客网站之扩展功能
- 十六、Django2.1 搭建多用户的博客网站——文章点赞功能
- 十七、Django2.1 搭建多用户的博客网站——统计文章浏览次数
- 十八、Django2.1 搭建多用户的博客网站——文章评论功能
- 十九、Django2.1 搭建多用户的博客网站——使用自定义模板标签
- 二十、Django2.1 搭建多用户的博客网站——文章标签
- 二十一、Django2.1 搭建多用户的博客网站——美图模块
- 未完待续
项目源码下载:https://github.com/jt1024/lehehe
正文:
1、完善导航栏
实现在首页导航栏可以查看所有文章。
在 ./templates/header.html 的
<li><a href="{% url 'blog:blog_list' %}">BLOG</a></li>
下面增加如下代码
<li><a href="{% url 'article:article_titles' %}">文章</a></li>
访问http://127.0.0.1:8000/home/ 可以看到导航栏中新增了“文章”栏目,如图:
点击“文章”,可显示所有作者的文章,如图:
文章栏目列表
2、展示某一作者的所有文章
有的用户想要查看某一作者的所有文章,我们需要实现点击作者姓名就能展示这个作者的文章列表。
首先在 ./templates/article/list/article_titles.html 中给“作者”添加超链接,代码如下
<p class="list-group-item-text">作者:<a href="{% url 'article:author_articles' article.author.username %}">{{article.author.username}}</a></p>
接着,我们新增一条路由
path('list-article-titles/<username>/', list_views.article_titles, name="author_articles"),
然后,我们修改 ./article/list_views.py 中的 article_titles 方法
from django.shortcuts import render, get_object_or_404
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import ArticlePost
from django.contrib.auth.models import User
def article_titles(request, username=None):
if username:
user = User.objects.get(username=username)
articles_title = ArticlePost.objects.filter(author=user)
try:
userinfo = user.userinfo
except:
userinfo = None
else:
articles_title = ArticlePost.objects.all()
paginator = Paginator(articles_title, 2)
page = request.GET.get('page')
try:
current_page = paginator.page(page)
articles = current_page.object_list
except PageNotAnInteger:
current_page = paginator.page(1)
articles = current_page.object_list
except EmptyPage:
current_page = paginator.page(paginator.num_pages)
articles = current_page.object_list
if username:
return render(request, "article/list/author_articles.html", {"articles": articles, "page": current_page, "userinfo": userinfo, "user": user})
return render(request, "article/list/article_titles.html", {"articles": articles, "page": current_page})
def article_detail(request, id, slug):
article = get_object_or_404(ArticlePost, id=id, slug=slug)
return render(request, "article/list/article_content.html", {"article": article})
最后,创建 ./templates/article/list/ author_articles.html
{% extends "base.html" %}
{% load staticfiles %}
{% block title %}articles{% endblock %}
{% block content %}
<div class="row text-center vertical-middle-sm">
<h1>阅读,丰富头脑,善化行为</h1>
</div>
<div class="container">
<div class="col-md-8">
{% for article in articles %}
<div class="list-group">
<a href="{{article.get_url_path}}" class="list-group-item active">
<h4 class="list-group-item-heading">{{article.title}}</h4>
</a>
<p class="list-group-item-text">作者:
<a href="{% url 'article:author_articles' article.author.username %}">{{article.author.username}}</a>
</p>
<p class="list-group-item-text">概要:{{article.body|slice:'70'|linebreaks}} </p>
</div>
{% endfor %}
{% include "paginator.html" %}
</div>
<div class="col-md-4">
<div>
{% if userinfo.photo %}
<img src="{{ userinfo.photo | striptags }}" class="img-circle" id="my_photo" name="user_face" style="width: 300px">
{% else %}
<img name="user_face" src="{% static 'images/newton.jpg' %}" class="img-circle" id="my_photo" style="width: 300px">
{% endif %}
</div>
<div>
<p>{{ user.username }}</p>
{% if userinfo %}
<p>{{ userinfo.company }}</p>
<p>{{ userinfo.aboutme }}</p>
{% else %}
<p>这个作者太懒了,什么也没有留下。</p>
{% endif %}
</div>
</div>
</div>
{% endblock %}
此时,运行Django 在文章列表点击某一个作者,会展示如图页面:
作者文章列表