博客系統(一) 博客系統分析, 主頁展現

 轉自 : https://www.cnblogs.com/xiao987334176/css

1、博客系統分析

數據庫的構建

首先,咱們分析一個博客系統的功能:html

  • 一個博客能夠有多個標籤(多對多)
  • 一個博客能夠有多條評論(一對多)
  • 一個博客只能夠有一個類別(多對一)

接下來,咱們分析關係的屬性:
博客:標題,做者,內容,發佈時間,分類(外鍵),標籤(多對多)等
標籤:標籤名
類別:分類名
評論:做者,博客(外鍵),郵箱,內容,發佈時間等。python

有8張表,表關係以下:jquery

 

圖中箭頭開始的英文字母表示關聯字段數據庫

按照箭頭方向查詢,表示正向查詢,不然爲反向查詢django

 

新建項目cnblog,應用名爲blogbootstrap

修改models.py,必須導入模塊session

from django.contrib.auth.models import AbstractUser

由於有一個表userinfo須要繼承它。django自帶的auth_user表也是繼承AbstractUseride

表模型以下:函數

from django.db import models # Create your models here.


from django.db import models # Create your models here.


from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """ 用戶信息 """ nid = models.AutoField(primary_key=True) telephone = models.CharField(max_length=11, null=True, unique=True) avatar = models.FileField(upload_to='avatars/', default="avatars/default.png") create_time = models.DateTimeField(verbose_name='建立時間', auto_now_add=True) blog = models.OneToOneField(to='Blog', to_field='nid', null=True, on_delete=models.CASCADE) def __str__(self): return self.username class Blog(models.Model): """ 博客信息 """ nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name='我的博客標題', max_length=64) site_name = models.CharField(verbose_name='站點名稱', max_length=64) theme = models.CharField(verbose_name='博客主題', max_length=32) def __str__(self): return self.title class Category(models.Model): """ 博主我的文章分類表 """ nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name='分類標題', max_length=32) blog = models.ForeignKey(verbose_name='所屬博客', to='Blog', to_field='nid', on_delete=models.CASCADE) def __str__(self): return self.title class Tag(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name='標籤名稱', max_length=32) blog = models.ForeignKey(verbose_name='所屬博客', to='Blog', to_field='nid', on_delete=models.CASCADE) def __str__(self): return self.title class Article(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField(max_length=50, verbose_name='文章標題') desc = models.CharField(max_length=255, verbose_name='文章描述') create_time = models.DateTimeField(verbose_name='建立時間', auto_now_add=True) content = models.TextField() comment_count = models.IntegerField(default=0) up_count = models.IntegerField(default=0) down_count = models.IntegerField(default=0) user = models.ForeignKey(verbose_name='做者', to='UserInfo', to_field='nid', on_delete=models.CASCADE) category = models.ForeignKey(to='Category', to_field='nid', null=True, on_delete=models.CASCADE) tags = models.ManyToManyField( to="Tag", #through參數能夠指定用做中介的中間模型
        through='Article2Tag', ) def __str__(self): return self.title class Article2Tag(models.Model): nid = models.AutoField(primary_key=True) article = models.ForeignKey(verbose_name='文章', to="Article", to_field='nid', on_delete=models.CASCADE) tag = models.ForeignKey(verbose_name='標籤', to="Tag", to_field='nid', on_delete=models.CASCADE) class Meta: #組合惟一約束
        unique_together = [ ('article', 'tag'), ] def __str__(self): v = self.article.title + "---" + self.tag.title return v class ArticleUpDown(models.Model): """ 點贊表 """ nid = models.AutoField(primary_key=True) user = models.ForeignKey('UserInfo', null=True, on_delete=models.CASCADE) article = models.ForeignKey("Article", null=True, on_delete=models.CASCADE) is_up = models.BooleanField(default=True) class Meta: # 組合惟一約束
        unique_together = [ ('article', 'user'), ] class Comment(models.Model): """ 評論表 """ nid = models.AutoField(primary_key=True) article = models.ForeignKey(verbose_name='評論文章', to='Article', to_field='nid', on_delete=models.CASCADE) user = models.ForeignKey(verbose_name='評論者', to='UserInfo', to_field='nid', on_delete=models.CASCADE) content = models.CharField(verbose_name='評論內容', max_length=255) create_time = models.DateTimeField(verbose_name='建立時間', auto_now_add=True) parent_comment = models.ForeignKey('Comment', null=True, on_delete=models.CASCADE) def __str__(self): return self.content
View Code

相關參數解釋:

through 表示orm,不要建立關係表。而制定一個表,這個表本身來建立!爲何呢?由於orm建立多對多關係表時,只有3個字段。那麼須要關係表須要擴充字段時,就不行了!

因此設置through 字段,是爲了方便添加額外的字段。使用through,那麼這個表,稱之爲中間模型。

在Comment模型表中,有一個字段parent_comment。它關聯的是自己表中的主鍵nid,它是一個父級評論id,用來展現誰評論誰!to='Comment'等同於to='self'

 

修改settings.py配置文件,覆蓋默認的User模型最後一行添加,不然執行建立表命令時會報錯!

AUTH_USER_MODEL="blog.UserInfo"

Django容許你經過修改setting.py文件中的 AUTH_USER_MODEL 設置覆蓋默認的User模型,其值引用一個自定義的模型。

bolg,是應用名。

 

使用下面2個命令,生成表

python manage.py makemigrations python manage.py migrate

生成的表以下:

 注意:django自帶的auth_user表沒有了,取而代之的是blog_userinfo表。

查看錶字段

它在auth_user表的基礎上,增長了5個字段!

 

登陸驗證

添加超級用戶,密碼必須是8位或者以上!

python manage.py createsuperuser

效果以下:

再建立2個用戶,zhang和lisi。用來測試多個用戶登陸! 

lisi用戶

 

修改urls.py,增長路徑

from blog import views urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index), path('login/', views.login), ]
View Code

修改views.py,增長視圖函數

from django.shortcuts import render,HttpResponse,redirect from django.contrib import auth from blog.models import Article,UserInfo # Create your views here.
def login(request): if request.method=="POST": user=request.POST.get("user") pwd=request.POST.get("pwd") # 用戶驗證成功,返回user對象,不然返回None
        user=auth.authenticate(username=user,password=pwd) if user: # 登陸,註冊session
            # 全局變量 request.user=當前登錄對象(session中)
 auth.login(request,user) return redirect("/index/") return render(request,"login.html") def index(request): return render(request,"index.html")
View Code

修改login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post"> {% csrf_token %} <lable>用戶名</lable><input type="text" name="user">
    <lable>密碼</lable><input type="password" name="pwd">
    <input type="submit">
</form>
</body>
</html>
View Code

修改index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>INDEX</h3>
</body>
</html>
View Code

訪問登陸頁面

跳轉到首頁

 

首頁修飾

修改settings.py,設置靜態文件目錄。最後一行添加:

STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static") ]
View Code

下載bootsrtap,將壓縮的包內容放到satic目錄

img和js是新建的

目錄以下:

修改urls.py,增長路徑

urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login), path('index/', views.index), path('logout/', views.logout), path('', views.index), ]
View Code

修改views.py,增長註銷

def logout(request):  # 註銷
 auth.logout(request) return redirect("/index/")
View Code

修改index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    <script src="/static/js/jquery.js"></script>
    <script src="/static/bootstrap/js/bootstrap.js"></script>
    <style> .desc{ text-align: justify; } .info{ margin-top: 10px; } </style>
</head>
<body>
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">博客園</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">新聞 <span class="sr-only">(current)</span></a></li>
                <li><a href="#">博問</a></li>

            </ul>

            <ul class="nav navbar-nav navbar-right"> {% if request.user.username %} <li><a href="#"><span class="glyphicon glyphicon-user"></span>&nbsp;{{ request.user.username }}</a>
                    </li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">修改密碼</a></li>
                            <li><a href="#">我的信息</a></li>
                            <li><a href="/logout/">註銷</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">Separated link</a></li>
                        </ul>
                    </li> {% else %} <li><a href="/login/">登錄</a></li>
                    <li><a href="#">註冊</a></li> {% endif %} </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

<div class="container-fluid">
    <div class="row">
        <div class="col-md-3">
            <div class="panel panel-primary">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>

            <div class="panel panel-danger">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
        </div>
        <div class="col-md-6">

            222

        </div>
        <div class="col-md-3">

            <div class="panel panel-warning">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
            <div class="panel panel-info">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
            <div class="panel panel-success">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>

        </div>
    </div>
</div>

</body>
</html>
View Code

從新登陸,效果以下:

 

添加內容

 使用django自帶的admin後臺,快速添加數據。

訪問後臺頁面,這裏必須是超級用戶。上面已經建立了超級用戶xiao

默認是空的

操做表,必需要註冊

修改views.py同級目錄下的admin.py

註冊全部的模型表

from django.contrib import admin # Register your models here.

from blog import models admin.site.register(models.UserInfo) admin.site.register(models.Blog) admin.site.register(models.Category) admin.site.register(models.Tag) admin.site.register(models.Article2Tag) admin.site.register(models.Article) admin.site.register(models.ArticleUpDown) admin.site.register(models.Comment)
View Code

再次刷新頁面

 

點擊Articles,添加文章

 

從http://www.py3study.com 上面copy一篇博客

注意內容都是html代碼

 添加分類

 添加站點

 

 保存

點擊保存

 添加成功

多添加幾篇博客

首頁文章展現

修改settings.py,更改時區

TIME_ZONE = 'Asia/Shanghai'

修改index視圖函數

def index(request): article_list=Article.objects.all() return render(request,"index.html",{"article_list":article_list})
View Code

修改index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    <script src="/static/js/jquery.js"></script>
    <script src="/static/bootstrap/js/bootstrap.js"></script>
    <style> .desc{ text-align: justify; } .info{ margin-top: 10px; } </style>
</head>
<body>
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">博客園</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">新聞 <span class="sr-only">(current)</span></a></li>
                <li><a href="#">博問</a></li>

            </ul>

            <ul class="nav navbar-nav navbar-right"> {% if request.user.username %} <li><a href="#"><span class="glyphicon glyphicon-user"></span>&nbsp;{{ request.user.username }}</a>
                    </li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">修改密碼</a></li>
                            <li><a href="#">我的信息</a></li>
                            <li><a href="/logout/">註銷</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">Separated link</a></li>
                        </ul>
                    </li> {% else %} <li><a href="/login/">登錄</a></li>
                    <li><a href="#">註冊</a></li> {% endif %} </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

<div class="container-fluid">
    <div class="row">
        <div class="col-md-3">
            <div class="panel panel-primary">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>

            <div class="panel panel-danger">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
        </div>
        <div class="col-md-6">

            <div class="article_list"> {% for article in article_list %} <div class="article_item">
                      <h5><a href="">{{ article.title }}</a></h5>
                      <div>
                          <span class="media-left"><a href=""><img width="60" height="60" src="https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1758343206,1224786249&fm=58&bpow=1024&bpoh=1536" alt=""></a></span>

                          <span class="media-right small desc "> {{ article.desc }} </span>

                      </div>
                      <div class="info small">
                            <span><a href="">{{ article.user.username }}</a></span> &nbsp; 發佈於 <span>{{ article.create_time|date:'Y-m-d H:i' }}</span>&nbsp;&nbsp; <span class="glyphicon glyphicon-comment"></span><a href="">評論({{ article.comment_count }})</a>&nbsp;&nbsp; <span class="glyphicon glyphicon-thumbs-up"></span><a href="">點贊({{ article.up_count }})</a>
                      </div>
                 </div>
                    <hr> {% endfor %} </div>



        </div>
        <div class="col-md-3">

            <div class="panel panel-warning">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
            <div class="panel panel-info">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
            <div class="panel panel-success">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>

        </div>
    </div>
</div>

</body>
</html>
View Code

訪問首頁,效果以下:

 

 

我的站點展現

好比博客園範圍我的站點是域名加用戶名,就能夠了,好比:

https://www.cnblogs.com/xiao987334176

若是用戶不存在,會提示404頁面

增長404頁面

修改urls.py,增長路徑。注意導入re_path

from django.contrib import admin from django.urls import path,re_path from blog import views urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login), path('index/', views.index), path('logout/', views.logout), path('', views.index), re_path('(?P<username>\w+)', views.homesite), ]
View Code

修改views.py,增長視圖函數

def homesite(request,username): """ 查詢 :param request: :param username: :return: """

    # 查詢當前站點的用戶對象
    user=UserInfo.objects.filter(username=username).first() if not user: return render(request,"not_found.html") return render(request,"homesite.html",{"user":user})
View Code

在templates目錄建立文件not_found.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
</head>
<body>


<div class="container" style="margin-top: 100px">
    <div class="text-center">
        <a href="http://www.cnblogs.com/"><img src="/static/img/logo_small.gif" alt="cnblogs"></a>
        <p><b>404.</b> 抱歉! 您訪問的資源不存在!</p>
        <p class="d">請確認您輸入的網址是否正確,若是問題持續存在,請發郵件至 xx@qq.com 與 <strong style="font-size: 28px">xiao</strong> 聯繫。</p>
        <p><a href="/">返回網站首頁</a></p>

    </div>
</div>
</body>
</html>
View Code

建立homesite.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>{{ user }}</h3>
</body>
</html>
View Code

訪問網頁:http://127.0.0.1:8000/xiao

訪問一個不存在的用戶

http://127.0.0.1:8000/123

頁面提示404

 

展現文章列表

修改homesite視圖函數

def homesite(request,username): """ 查詢 :param request: :param username: :return: """

    # 查詢當前站點的用戶對象
    user=UserInfo.objects.filter(username=username).first() if not user: return render(request,"not_found.html") # 查詢當前站點對象
    blog=user.blog # 查詢當前用戶發佈的全部文章
    article_list=Article.objects.filter(user__username=username) return render(request,"homesite.html",{"blog":blog,"article_list":article_list})
View Code

修改homesite.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        *{ margin: 0; padding: 0; } .header{ width: 100%; height: 59px; background-color: #369;
 } .header .title{ line-height: 59px; color: white; font-weight: lighter; margin-left: 20px; font-size: 18px; } .left_region{ margin-top: 10px; } .info{ margin-top: 10px; color: darkgray; } </style>
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    <script src="/static/js/jquery.js"></script>
    <script src="/static/bootstrap/js/bootstrap.js"></script>
</head>
<body>
<div class="header">
    <p class="title">{{ blog.title }}</p>
</div>


<div class="container-fluid">
    <div class="row">
        <div class="col-md-3">
            <div class="left_region">
                 <div class="panel panel-success">
                <div class="panel-heading">
                    <h3 class="panel-title">Panel title</h3>
                </div>
                <div class="panel-body"> Panel content </div>
            </div>
                 <div class="panel panel-warning">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body"> Panel content </div>
                </div>
                 <div class="panel panel-info">
                    <div class="panel-heading">
                        <h3 class="panel-title">Panel title</h3>
                    </div>
                    <div class="panel-body"> Panel content </div>
                </div>
            </div>
        </div>
        <div class="col-md-9">

             <div class="article_list"> {% for article in article_list %} <div class="article_item clearfix">
                      <h5><a href="">{{ article.title }}</a></h5>
                      <div>

                          <span class="small desc "> {{ article.desc }} </span>

                      </div>
                      <div class="info small pull-right"> 發佈於 <span>{{ article.create_time|date:'Y-m-d H:i' }}</span>&nbsp;&nbsp; <span class="glyphicon glyphicon-comment"></span><a href="">評論({{ article.comment_count }})</a>&nbsp;&nbsp; <span class="glyphicon glyphicon-thumbs-up"></span><a href="">點贊({{ article.up_count }})</a>
                      </div>
                 </div>
                    <hr> {% endfor %} </div>

        </div>
    </div>
</div>


</body>
</html>
View Code

訪問xiao的我的站點,效果以下:

 這個時候發現,左上角沒有顯示博客標題。那是由於用戶認證表的blog_id字段默認爲空,須要在admin後臺綁定一下

登陸到後臺,點擊用戶表,點擊指定的用戶xiao

拉到最下面,綁定blog,點擊保存

再次刷新我的站點,發現出來了!

 

做業:

查詢當前站點每個分類的名稱以及對應的文章數

查詢當前站點每個標籤的名稱以及對應的文章數

答案:

修改homesite視圖函數

def homesite(request,username): """ 查詢 :param request: :param username: :return: """
    # 查詢當前站點的用戶對象
    user=UserInfo.objects.filter(username=username).first() if not user: return render(request,"not_found.html") # 查詢當前站點對象
 blog=user.blog # 查詢當前用戶發佈的全部文章
    article_list=Article.objects.filter(user__username=username) # 查詢當前站點每個分類的名稱以及對應的文章數
    cate_list = Category.objects.filter(blog=blog).annotate(c=Count("article__title")).values("title","c") print(cate_list) # 查詢當前站點每個標籤的名稱以及對應的文章數
    tag_list = Tag.objects.filter(blog=blog).annotate(c=Count("article__title")).values("title","c") print(tag_list) dict = {"blog":blog, "article_list":article_list, "category_count":cate_list, "tag_count":tag_list, } return render(request,"homesite.html",dict)
View Code

修改homesite.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        *{ margin: 0; padding: 0; } .header{ width: 100%; height: 59px; background-color: #369;
 } .header .title{ line-height: 59px; color: white; font-weight: lighter; margin-left: 20px; font-size: 18px; } .left_region{ margin-top: 10px; } .info{ margin-top: 10px; color: darkgray; } h5 a { color: #105cb6;
            font-size: 14px; font-weight: bold; text-decoration: underline; } </style>
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    <script src="/static/js/jquery.js"></script>
    <script src="/static/bootstrap/js/bootstrap.js"></script>
</head>
<body>
<div class="header">
    <p class="title">{{ blog.title }}</p>
</div>


<div class="container-fluid">
    <div class="row">
        <div class="col-md-3">
            <div class="left_region">
                 <div class="panel panel-success">
                <div class="panel-heading">
                    <h3 class="panel-title">個人標籤</h3>
                </div> {% for foo in category_count %} <div class="panel-body"> {{ foo.title }}({{ foo.c }}) </div> {% endfor %} </div>
                 <div class="panel panel-warning">
                    <div class="panel-heading">
                        <h3 class="panel-title">隨筆分類</h3>
                    </div> {% for foo in tag_count %} <div class="panel-body"> {{ foo.title }}({{ foo.c }}) </div> {% endfor %} </div>
                 <div class="panel panel-info">
                    <div class="panel-heading">
                        <h3 class="panel-title">隨筆檔案</h3>
                    </div>
                    <div class="panel-body"> Panel content </div>
                </div>
            </div>
        </div>
        <div class="col-md-9">

             <div class="article_list"> {% for article in article_list %} <div class="article_item clearfix">
                      <h5><a href="">{{ article.title }}</a></h5>
                      <div>

                          <span class="small desc "> {{ article.desc }} </span>

                      </div>
                      <div class="info small pull-right"> 發佈於 <span>{{ article.create_time|date:'Y-m-d H:i' }}</span>&nbsp;&nbsp; <img src="/static/img/icon_comment.gif" alt=""><a href="">評論({{ article.comment_count }})</a>&nbsp;&nbsp; <span class="glyphicon glyphicon-thumbs-up"></span><a href="">點贊({{ article.up_count }})</a>
                      </div>
                 </div>
                    <hr> {% endfor %} </div>

        </div>
    </div>
</div>


</body>
</html>
View Code

進入admin後臺,添加一個tag。增長一篇文章

從新訪問我的站點網頁,效果以下:

 

相關文章
相關標籤/搜索