Django查看某个作者的文章

本文介绍如何在Django博客系统中实现查看特定作者文章列表的功能,包括修改视图函数、模板文件及URL配置,确保用户可以浏览指定作者的所有文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 查看某个作者的文章思维导图

二 修改mysite/article/list_views.py

# 这种方式兼顾两种可能,一种的直接请求所有文章标题,另外一个是请求某个用户的文章标题
def article_titles(request, username=None):
    if username:
        user = User.objects.get(username=username)
        articles_title = ArticlePost.objects.filter(author=user)
    else:
        articles_title = ArticlePost.objects.all()
    # 每页展示4篇文章
    paginator = Paginator(articles_title, 4)
    # 获得要展示的页面
    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

    return render(request, "article/list/article_titles.html", {"articles":articles, "page": current_page})

三 修改模板文件mysite/templates/article/list/article_titles.html,增加对作者的超链接

{% extends "base.html" %}
{% block title %} 文章展示 {% endblock %}

{% block content %}
<div class="row text-center vertical-middle-sm">
    <h1>阅读,丰富头脑,善化行为</h1>
</div>
<div class="container">
    {% for article in articles %}
    <div class="list-group">
        <!--调用ArticlePost中的get_url_path-->
        <a href="{{article.get_url_path}}" class="list-group-item active">
            <h4 class="list-group-item-heading">{{article.title}}</h4>
        </a>
        <!--article.author能够关联到User对象,然后获得该对象的username-->
        <!--增加超链接,用于得到该作者的所有文章-->
        <p class="list-group-item-text">作者:<a href="{% url 'article:author_articles' article.author.username %}">{{article.author.username}}</a></p>
        <!--文章的内容切下前70个字符,linebreaks表示原文中的换行HTML标记符继续产生效用-->
        <p class="list-group-item-text">概要:{{article.body|slice:'70'| linebreaks}}</p>
    </div>
    {% endfor %}
<!--引入分页模板-->
{% include "paginator.html" %}
</div>
{% endblock %}

四 配置URL文档mysite/article/urls.py

from django.conf.urls import url
from . import views, list_views

urlpatterns = [
    url(r'^article-column/$', views.article_column, name="article_column"),
    url(r'^rename-column/$', views.rename_article_column, name="rename_article_column"),
    url(r'^del-column/$', views.del_article_column, name="del_article_column"),
    url(r'^article-post/$', views.article_post, name="article_post"),
    url(r'^article-list/$', views.article_list, name="article_list"),
    url(r'^article-detail/(?P<id>\d+)/(?P<slug>[-\w]+)/$', views.article_detail, name="article_detail"),
    url(r'^del-article/$', views.del_article, name="del_article"),
    url(r'^redit-article/(?P<article_id>\d+)/$', views.redit_article, name="redit_article"),
    url(r'^list-article-titles/$', list_views.article_titles, name="article_titles"),
    # 视图函数虽然相同,但可以根据不同的视图文件来区分,但name应该不同
    url(r'^list-article-detail/(?P<id>\d+)/(?P<slug>[-\w]+)/$', list_views.article_detail, name="list_article_detail"),
    # 对应某个作者的全部文章
    url(r'^list-article-titles/(?P<username>[-\w]+)/$', list_views.article_titles, name="author_articles"),
]

五 修改模板文件mysite/templates/article/list/article_detail.html,增加作者超链接

{% extends "article/base.html" %}
{% load staticfiles %}
{% block title %}文章详情{% endblock %}
{% block content %}
<div>
    <header>
        <h1>{{ article.title }}</h1>
        <p><a href="{% url 'article:author_articles' article.author.username %}">
            {{ article.author.username }}
        </a></p>
    </header>

    <link rel="stylesheet" href="{% static 'editor/css/editormd.preview.css' %}" />
    <div id='editormd-view'>
        <textarea id="append-test" style="display:none;">
{{ article.body }}
        </textarea>
    </div>

</div>
<script src='{% static "js/jquery.js" %}'></script>
<script src='{% static "editor/lib/marked.min.js" %}'></script>
<script src='{% static "editor/lib/prettify.min.js" %}'></script>
<script src='{% static "editor/lib/raphael.min.js" %}'></script>
<script src='{% static "editor/lib/underscore.min.js" %}'></script>
<script src='{% static "editor/lib/sequence-diagram.min.js" %}'></script>
<script src='{% static "editor/lib/flowchart.min.js" %}''></script>
<script src='{% static "editor/lib/jquery.flowchart.min.js" %}'></script>
<script src='{% static "editor/editormd.js" %}'></script>
<script type="text/javascript">
$(function(){
    editormd.markdownToHTML("editormd-view", {
        htmlDecode      : "style,script,iframe",  // you can filter tags decode
        emoji           : true,
        taskList        : true,
        tex             : true,  // 默认不解析
        flowChart       : true,  // 默认不解析
        sequenceDiagram : true,  // 默认不解析
    });
});
</script>
{% endblock %}

六 测试

浏览器输入:http://127.0.0.1:8000/article/list-article-titles/

点击其中一个作者

某篇文章下点击作者

页面显示该作者的所有文章

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值