一 編寫檢視函式
# 沒有登入的使用者也可以訪問這個函式
def article_detail(request, id, slug):
article = get_object_or_404(articlepost, id=id, slug=slug)
# 一般通過「物件型別:物件id:物件屬性」來命名乙個鍵
total_views = r.incr("article:{}:views".format(article.id))
# zincrby的原型是zincrby(name,amount,value):根據amount所設定的步長值增加有序集合(name)中的value的數值
# 實現了article_ranking中的article.id以步長1自增,
# 即文章訪問一次,article_ranking就將文章id的值增1
r.zincrby('article_ranking', 1,article.id)
# 得到article_ranking中排序前10名物件
article_ranking = r.zrange('article_ranking', 0, -1, desc=true)[:10]
print(article_ranking)
# 得到前10名文章id
article_ranking_ids = [int(id) for id in article_ranking]
print(article_ranking_ids)
# 查詢出id在article_ranking_ids這個範圍內的所有文章物件,並以文章物件為元素生成列表
most_viewed = list(articlepost.objects.filter(id__in=article_ranking_ids))
print(most_viewed)
# 對所得到的列表進行排序
most_viewed.sort(key=lambda x: article_ranking_ids.index(x.id))
# 將訪問次數傳遞給模板,將最受歡迎文章列表傳遞給前端
return render(request, "article/list/article_detail.html",
)
二 編寫前端模板
}}
}like}
}view}
like
unlike
點讚本文的讀者
}還沒有人對此文章表態
}
三 測試 Django實現文章標題列表
一 檢視函式實現 login required login url account login def article list request 篩選出使用者的所有文章物件,並將該物件渲染給模板 articles articlepost.objects.filter author request.u...
Django的分頁顯示實現
django中提供了乙個類paginator專門用來管理和處理分頁資料,所以我們在使用之前先導入好相應的類,另外這裡我們也匯入了待會會用到的處理異常的兩個類emptypage和pagenotaninteger from django.core.paginator import paginator,e...
Django 實現web分頁顯示
從資料庫取出資料,根據事先定義的每頁顯示的數量,進行分頁計算,得到頁數,構造html,返回給前端解析顯示。大致分為兩種 def page student list request,page page int page start num page 1 10 end num page 10 db st...