1. 程式人生 > >django之文章最終頁

django之文章最終頁

python

文章最終頁,就是點擊鏈接標題後,顯示文章的具體內容
從上一篇博文,我們已經做好個人主頁的篩選,下面是通過點擊篩選後的文章,顯示文章最終頁面
url設置如下:

    url(r‘^(?P<site>\w+)/(?P<nid>\d+).html$‘, views.article),

之所以是這個url路由是,前端home頁面配置錄入下的title,a標簽傳遞參數的時候就傳遞了2個參數

<div>
    {% for article in article_list %}
        <div>
            <a href="/{{ blog.site }}/{{ article.nid }}.html">{{ article.title }}</a>
            <div>{{ article.summary }}</div>
        </div>

    {% endfor %}

</div>

後臺的代碼

def article(request,site,nid):
    blog=models.Blog.objects.filter(site=site).first()
    if not blog:
        return redirect(‘/‘)

    #分類
    category_list = models.Article.objects.filter(blog=blog).values(‘category_id‘,‘category__title‘).annotate(ct=Count(‘nid‘))
    #標簽
    tag_list = models.Article2Tag.objects.filter(article__blog=blog).values(‘tag_id‘,‘tag__title‘).annotate(ct=Count(‘id‘))

    #時間
    date_list = models.Article.objects.filter(blog=blog).extra(
        select={‘ctime‘: "strftime(‘%%Y-%%m‘,create_time)"}).values(‘ctime‘).annotate(ct=Count(‘nid‘)
    )
    #文章列表
    obj = models.Article.objects.filter(blog=blog,nid=nid).first()

    return render(
        request,
        ‘article.html‘,
        {
            ‘blog‘:blog,
            ‘category_list‘:category_list,
            ‘tag_list‘:tag_list,
            ‘date_list‘:date_list,
            ‘obj‘:obj,

        }
    )

前端頁面代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/css/theme/{{ blog.theme }}.css">
</head>
<body>
<div>{{ blog.title }}--{{ blog.user.nickname }}</div>
<div class="c1">
    <h3>文章分類</h3>
    <ul>
        {% for category in category_list %}
            <li><a href="/{{ blog.site }}/category/{{ category.category_id }}">{{ category.category__title }}({{ category.ct }})</a></li>
        {% endfor %}
    </ul>
</div>
<div class="c2">
    <h3>標簽分類</h3>
    <ul>
        {% for tag in tag_list %}
            <li><a href="/{{ blog.site }}/tag/{{ tag.tag_id }}">{{ tag.tag__title }}({{ tag.ct }})</a></li>
        {% endfor %}

    </ul>
</div>

<div>
    <h3>時間標簽</h3>
    <ul>
        {% for date in date_list %}
        <li><a href="/{{ blog.site }}/date/{{ date.ctime }}">{{ date.ctime }}({{ date.ct }})</a></li>
        {% endfor %}

    </ul>
</div>
<div>
    {% for article in article_list %}
        <div>
            <a href="/{{ blog.site }}/{{ article.id }}">{{ article.title }}</a>
{#            <div>{{ article.summary }}</div>#}
        </div>

    {% endfor %}

</div>
<div>
    <a href="">{{ obj.title }}</a>
    <br>
    {{ obj.articledetail.content|safe }}
</div>
</body>
</html>

結果
技術分享圖片

django之文章最終頁