邏輯:
做出樣式(從複製的)
用js判斷點選的是贊還是反對按鈕
判斷使用者是否已經點過贊或反對,如果沒有點過:點讚表建立資料,判斷使用者是點的贊還是點的反對,增加相應的資料。
文章表的贊或反對加1
如果點過:返回錯誤狀態
返回布林值(true代表用使用者點的贊,false代表使用者點的反對)
ajax接收資料,如果是第一次點讚或反對,用js給響應按鈕+1
如果已經點過,提示相應資訊。
html
<div
class
="clearfix"
>
<
div
id="div_digg"
>
<
div
class
="diggit action"
>
<
span
class
="diggnum"
id="digg_count"
>}
span
>
div>
<
div
class
="buryit action"
>
<
span
class
="burynum"
id="bury_count"
>}
span
>
div>
<
div
class
="clear"
>
div>
<
div
class
="diggword"
id="digg_tips"
>
div>
div>
div>
div>
css
#div_digg .diggit .diggnum #div_digg .diggnum .buryit .clear .diggword
js
//點讚請求
$('#div_digg .action').click(function
() }",
},success:
function
(data)
else
, 1000)}}
})});
py
# urls.py# 點讚
path('digg/', views.digg),
views.py
# 點讚
def digg(request):
article_id = request.post.get('article_id')
is_up = json.loads(request.post.get('is_up'))
user_id =request.user.pk
obj = models.articleupdown.objects.filter(user_id=user_id, article_id=article_id).first()
response =
ifnot obj:
models.articleupdown.objects.create(
user_id=user_id,
article_id=article_id,
is_up=is_up,
)article_obj = models.article.objects.filter(pk=article_id)
ifis_up:
article_obj.update(up_count=f('up_count') + 1)
else
: article_obj.update(down_count=f('down_count') + 1)
else
: response['status'] =false
response['handled'] =obj.is_up
return jsonresponse(response)
電商詳情頁的一般實現
實現方式 小 頁面靜態化。可以為每個商品生成乙個靜態頁面,訪問時直接訪問商品的靜態頁面 內容管理系統 缺點 當商品量很大的時候,無法支撐,商品資訊一旦改動,都必須重新生成html頁面 大 將商品資料儲存於多級快取中 ehcache redis 商品的html模板存放於前端的web伺服器中 nginx...
jquery ajax之點贊功能的實現
之前,一直想用一下ajax的技術到專案中,看他到底好處在 為什麼會被這麼多人所推崇。還記得之前也是看過jquery,但是現在回過來想想,其實能夠記起來的東西很少,只有將知識應用起來,可能才會記憶深刻吧!今年開始我逐漸開始積累起自己的一些 和 新知識,這樣的話到以後要用的時候可以作為參考之用。func...
vue個人部落格開發記錄 實現文章點讚功能(三)
1.後端 1.1 增加文章中點贊對應的規則const articleschema monoogse.schema 省略 新增點讚對應的規則,關聯user 使用者表 praise 1.2 增加對應的介面 點讚介面 router.post praise async req,res req.body if...