article_detail.html
#}#}base.htmlclass="
article_info
">//文章標題class="
cont
">//文章內容}
//點讚,這一套點讚,再給它們加上樣式//點讚,}
//不要把點讚數寫成1,這樣就寫死了
//踩滅;要給點讚和踩滅同時繫結ajax,同時起個名字action}
"enarticle_detail.css(點讚樣式的)">class="
header
">
class="
content
">
class="
title
">
}""class="
backend
">管理
class="
container
">
class="
row">
class="
col-md-3 menu
" >
class="
col-md-9
">
.article_info .title哪個使用者對那篇文章進行了點讚,發ajax請求,發生true or false#div_digg.diggit.buryit
.clear
home_site.css
*views.py.header
.header .title
.backend
.pub_info
.menu
#點讚————>>>點讚import
json
defdigg(request):
(request.post)
article_id = request.post.get("
article_id
") #應該傳布林值,反序列化下,而不是字串
is_up = json.loads(request.post.get("
is_up
")) #它拿到的是
字串「true」,傳的時候永遠是乙個真值,要反序列化傳乙個布林值;
#點讚人即當前登入人
再次訪問點讚這個頁面時,應該保持這個點讚數。--->>> 在建立點讚記錄的時候同時也要對文章進行更新。
#article_detail.html 渲染有兩種方式: render的渲染(重新整理頁面)、ajax的dom顯示(區域性重新整理), view code點讚import
json
from django.db.models import
fdef
digg(request):
(request.post)
article_id = request.post.get("
article_id")
is_up = json.loads(request.post.get("
is_up
")) #
字串的「true」,是乙個布林值
#點讚人即當前登入人
user_id =request.user.pk
ard = models.articleupdown.objects.create(user_id=user_id, article_id=article_id,is_up=is_up)
queryset = models.article.objects.filter(pk=article_id) #拿到這篇文章
ifis_up:
queryset.update(up_count=f("
up_count
")+1)#對這篇文章點讚數進行更新else
點讚import
字串的「true」,是乙個布林值
#點讚人即當前登入人
user_id =request.user.pk
obj = models.articleupdown.objects.filter(user_id=user_id, article_id=
article_id).first() //過濾,使用者對文章做了什麼操作;拿到這個物件。
response= #預設true
ifnot
obj:
ard = models.articleupdown.objects.create(user_id=user_id, article_id=article_id,is_up=is_up)
queryset = models.article.objects.filter(pk=article_id)
ifis_up:
queryset.update(up_count=f("
up_count
")+1)
else
: queryset.update(down_count=f("
down_count
")+1)
else
: response[
"state
"] = false #
true表示你已經贊支援過了,false表已經踩過了
response["
handled
"] = obj.is_up #
字典再加乙個資訊;過濾出的obj拿到is_up
return jsonresponse(response)
ajax 實現點讚功能
原理 1.通過ajax將資料提交到服務端。2.服務端處理並返回結果。jquery的ajax形式如下 ajax 需要提交的資料 success function data if data 2 服務端處理資料 post接受資料 id post id user post user sql update t...
點讚功能與redis
摘要 前言點讚其實是乙個很有意思的功能。基本的設計思路有大致兩種,一種自然是用mysql等資料庫直接落地儲存,另外一種就是利用點讚的業務特徵來扔到redis 或memcache 中,然後離線刷回mysql等。直接寫入mysql直接寫入mysql是最簡單的做法。做兩個表即可,1 post like記錄...
點讚功能與redis
摘要 前言點讚其實是乙個很有意思的功能。基本的設計思路有大致兩種,一種自然是用mysql等資料庫直接落地儲存,另外一種就是利用點讚的業務特徵來扔到redis 或memcache 中,然後離線刷回mysql等。直接寫入mysql直接寫入mysql是最簡單的做法。做兩個表即可,1 post like記錄...