個人站點渲染和跳轉過濾功能

2022-09-16 09:24:11 字數 3417 閱讀 3041

核心邏輯:在url裡加入正則,匹配分類、標籤、年月日和其後面的引數,在檢視函式接收這些引數,然後進行過濾。

urls.py

#

個人站點的跳轉

re_path(r'

^(?p\w+)/(?ptag|category|archive)/(?p.*)/$

', views.home_site),

#個人站點

re_path(r'

^(?p\w+)/$

', views.home_site, name='

home_site

'),

home_site.py

def home_site(request, username, **kwargs):

"""個人站點檢視函式

:param request:

:return:

"""user = userinfo.objects.filter(username=username).first()

#判斷使用者是否存在

ifnot

user:

return render(request, '

not_found.html')

article_list = models.article.objects.filter(user=user)

ifkwargs:

condition = kwargs.get('

condition')

param = kwargs.get('

param')

if condition == '

category':

article_list = article_list.filter(category__title=param)

elif condition == '

tag'

: article_list = article_list.filter(tags__title=param)

else

: year, month = param.split('-'

) article_list = article_list.filter(created_time__year=year, created_time__month=month)

#查詢當前站點

blog =user.blog

#獲取當前使用者或者當前站點對應的所有文章

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

category_list = models.category.objects.filter(blog=blog).values('pk'

).annotate(

count=count('

article__title

')).values_list(

'title

', '

count')

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

tag_list = models.tag.objects.filter(blog=blog).values('

pk').annotate(count=count('

article

')).values_list(

'title

', '

count')

#查詢當前站點的每乙個年月名稱以及對應的文章數

date_list = models.article.objects.filter(user=user).annotate(month=truncmonth('

created_time

')).values_list(

'month

').annotate(

count=count('

nid'

)).values_list(

'month

', '

count')

context =

return render(request, '

home_site.html

', context=context)

home_site.html

"en

">class="

header

">

class="

header_content

">

class="

title

">

}""class="

backend

">管理

class="

container main_content

">

class="

row">

class="

col-md-3

">

class="

panel panel-warning

">

class="

panel-heading

">我的標籤

class="

panel-body

">

"/}/tag/}

">}(})

class="

panel panel-danger

">

class="

panel-heading

">隨筆分類

class="

panel-body

">

"/}/category/}

">}(})

class="

panel panel-success

">

class="

panel-heading

">隨筆歸檔

class="

panel-body

">

"/}/archive/}

">}

(})class="

col-md-9

">

class="

article_list

">

class="

article_item clearfix

">

"">}

class="

article_desc

">}

class="

small pub_info pull-right

">

發布於}

class="

glyphicon glyphicon-comment

">

class="

glyphicon glyphicon-thumbs-up

">

點讚}

個人部落格站點推薦(三)

部落格日漸落寞,更新者越來越少,但是留下的很多都是精華,就像我之前推薦的那些部落格一樣。mactalk賣桃者,池建強,曾經任職錘子科技,現極客時間創始人。部落格結合科技與人文,值得一看。著有 mactalk 人生元程式設計 mactak 跨越邊界 四火的嘮叨,西雅圖程式設計師一枚,技術,管理,成長,...

個人部落格站點推薦(二)

在前幾篇文章中,推薦了一些個人站點,看效果還不錯。繼續再推薦一些,希望對看到的朋友有些幫助。1.陳皓,網名左耳朵耗子,這裡有技術和思考的文章,作者在極客時間也有專欄,這裡一直也在更新。從這裡收穫了很多。2.雲風大牛的技術部落格,重點於技術文章,偶爾也有其他型別的思考,一直在更新。3.楊文博的部落格,...

查詢個人站點的文章 分類和標籤查詢

urls.py re path p w views.home site,name home site home site.py def home site request,username 個人站點檢視函式 param request return user userinfo.objects.fil...