最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django點(diǎn)贊的實(shí)現(xiàn)示例

 更新時(shí)間:2022年03月04日 09:25:55   作者:365JHWZGo  
本文主要介紹了Django點(diǎn)贊的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1.前期準(zhǔn)備

用戶models.py

class User(models.Model):
? ? username = models.CharField("用戶名",max_length=10)

點(diǎn)贊models.py
LikeNum的作用在于當(dāng)有人點(diǎn)贊時(shí)可以把它記錄下來,包括點(diǎn)贊者和點(diǎn)贊的內(nèi)容

# 喜歡數(shù)
class LikeNum(models.Model):
? ? user = models.ForeignKey(UserInfos,null=True,on_delete=models.SET_NULL)
? ? discussion = models.ForeignKey(Discussion,null=True,on_delete=models.SET_NULL)
? ? class Meta:
? ? ? ? verbose_name_plural = 'user'

發(fā)布models.py
Discusssion的作用在于渲染前端頁面,里邊包括動(dòng)態(tài)發(fā)布人和被點(diǎn)贊數(shù)量

# 我的討論
class Discussion(models.Model):
? ? user = models.ForeignKey(UserInfos,null=True,on_delete=models.SET_NULL)
? ? likes = models.PositiveIntegerField("喜歡",default=0,editable=False)
? ? class Meta:
? ? ? ? verbose_name_plural = 'Discussion'

views.py

# 討論點(diǎn)贊
def addLikes(request,id):
?? ?# 識別出該登陸者用戶信息
? ? if request.session.get('username') and request.session.get('uid'):
? ? ? ? username = request.session.get('username')
? ? ? ? user = UserInfos.objects.get(username=username)
? ? else:
? ? ?? ?# error 是自己寫的出錯(cuò)頁面
? ? ?? ?return HttpResponseRedirect('/error')
? ? ?? ?
? ? # 判別點(diǎn)贊的該Discussion是否存在,有可能在你點(diǎn)贊的時(shí)候該用戶已經(jīng)刪除,注意不能簡單的使用if,else當(dāng)找不到discussion時(shí)會(huì)出錯(cuò)
? ? try:
? ? ? ? if Discussion.objects.get(id=id):
? ? ? ? ?? ?# 如果Discussion存在
? ? ? ? ? ? d = Discussion.objects.get(id=id)
? ? ? ? ? ? # 如果User存在
? ? ? ? ? ? if user:
? ? ? ? ? ? ?? ?# 判斷當(dāng)前用戶是否已經(jīng)給該Discussion點(diǎn)過贊
? ? ? ? ? ? ?? ?# record 為該記錄,不存在時(shí)則自動(dòng)創(chuàng)建
? ? ? ? ? ? ?? ?# flag 為當(dāng)前是否操作
? ? ? ? ? ? ? ? record,flag = LikeNum.objects.get_or_create(user=user,discussion=d)
? ? ? ? ? ? ? ? # 如果剛剛創(chuàng)建
? ? ? ? ? ? ? ? if flag:
? ? ? ? ? ? ? ? ? ? d.likes+=1
? ? ? ? ? ? ? ? ? ? d.save()
? ? ? ? ? ? ? ? # 如果沒操作,說明之前點(diǎn)過贊,此時(shí)再次點(diǎn)贊說明是要取消點(diǎn)贊
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? d.likes -= 1
? ? ? ? ? ? ? ? ? ? d.save()
?? ??? ??? ??? ? ? ?# 并且刪除掉點(diǎn)贊記錄
?? ??? ? ? ? ? ? ? ?LikeNum.objects.get(user=user,discussion=d).delete()
?? ??? ? ? ? ? ?# 跳轉(zhuǎn)到發(fā)布頁面
? ? ? ? ? ? ? ? return render(request,'page.html',{'page':Discusssion.objects.all(),'ln':LikeNum.objects.fitter(user=user)})
? ? ? ? ? ? else:
? ? ? ? ? ? ?? ?# 如果session中沒有用戶信息,則跳轉(zhuǎn)到登陸頁面
? ? ? ? ? ? ? ? return redirect('/login') ?
? ? except Exception as e:
? ? ? ? # 否則跳轉(zhuǎn)到失敗頁面
? ? ? ? return HttpResponseRedirect('/error')

2.html實(shí)現(xiàn)

{% for item in page %}
<div>
?? ?用戶名:{{item.user.username}}
? <a id="id{{item.id}}">
? ? ? ?<svg class="icon" aria-hidden="true">
? ? ? ? ? ? ? ?<use xlink:href="#icon-like-fill" rel="external nofollow" ></use>
? ? ? ? ? ?</svg>
? ? ? ?<span id="nlikes">{{item.likes}}</span>
? ?</a>
</div>
<!-- 請把我寫在這里 3.js實(shí)現(xiàn) --!>
{% endfor %}

3.js實(shí)現(xiàn)【?。?!注意這段代碼寫在for循環(huán)之內(nèi)】

//ln指likenum【點(diǎn)贊數(shù)】,因?yàn)辄c(diǎn)贊記錄是QuerySet,需要從里邊遍歷
?{% if ln %}?
?// 遍歷
?{% for l in ln %}?
?// 當(dāng)當(dāng)前的discussion在LikeNum記錄里時(shí),為a標(biāo)簽添加一個(gè)class
?{% if l.discussion == item %}
?? ?<script>
?? ? ? ?obj = document.getElementById('id{{item.id}}');
?? ? ? ?obj.className = 'success';
?? ?</script>
{% endif %}?
{%endfor%}?
{%endif%}

4.css實(shí)現(xiàn)

.success {
? ? color: #fc5531;
? ? text-decoration: none;
}

a {
? ? text-decoration: none;
? ? color: #848B96;
}

a:hover {
? ? color: #fc5531;
}

這只是一個(gè)大概流程,具體的美化還需要自己實(shí)現(xiàn),不懂得話可以留言來交流!

示意圖【我自己做出來的效果】

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

 到此這篇關(guān)于Django點(diǎn)贊的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Django 點(diǎn)贊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 520必備!這些Python表白代碼祝你脫單成功

    520必備!這些Python表白代碼祝你脫單成功

    不會(huì)還有程序猿沒有女朋友吧?沒關(guān)系,今天特地為大家整理了這些Python花式表白代碼,你就放心大膽的去吧,需要的朋友可以參考下
    2021-05-05
  • 利用numpy和pandas處理csv文件中的時(shí)間方法

    利用numpy和pandas處理csv文件中的時(shí)間方法

    下面小編就為大家分享一篇利用numpy和pandas處理csv文件中的時(shí)間方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python挖礦算力測試程序詳解

    python挖礦算力測試程序詳解

    這篇文章主要介紹了python挖礦算力測試程序詳解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python+opencv打開攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法

    python+opencv打開攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇python+opencv打開攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 如何使用Python抓取網(wǎng)頁tag操作

    如何使用Python抓取網(wǎng)頁tag操作

    這篇文章主要介紹了如何使用Python抓取網(wǎng)頁tag操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python中發(fā)布Web應(yīng)用的常見方法與對比

    Python中發(fā)布Web應(yīng)用的常見方法與對比

    這篇文章主要為大家詳細(xì)介紹了Python中發(fā)布?Web?應(yīng)用的幾種常見方法的實(shí)現(xiàn)詳細(xì)步驟以及它們的部署方法對比,有需要的小伙伴可以參考下
    2025-02-02
  • 使用TensorFlow實(shí)現(xiàn)簡單線性回歸模型

    使用TensorFlow實(shí)現(xiàn)簡單線性回歸模型

    這篇文章主要為大家詳細(xì)介紹了使用TensorFlow實(shí)現(xiàn)簡單線性回歸模型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 基于Python實(shí)現(xiàn)批量保存視頻到本地

    基于Python實(shí)現(xiàn)批量保存視頻到本地

    我們刷視頻時(shí)常常會(huì)想把精彩的視頻保存到本地,如果少數(shù)的還行,如果有很多的話一個(gè)個(gè)保存太麻煩了。本文教你如何用Python實(shí)現(xiàn)視頻批量保存到本地,需要的可以參考一下
    2022-05-05
  • python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并采集信息的方法

    python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并采集信息的方法

    這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并采集信息的方法,涉及Python模擬登陸及正則匹配的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python中字典列表中刪除重復(fù)項(xiàng)

    Python中字典列表中刪除重復(fù)項(xiàng)

    本文主要介紹了Python中字典列表中刪除重復(fù)項(xiàng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

满城县| 怀安县| 广德县| 石河子市| 邻水| 宜城市| 句容市| 澄江县| 惠东县| 成武县| 靖边县| 遂平县| 靖边县| 明星| 阳城县| 四平市| 龙井市| 九江县| 夹江县| 灵寿县| 曲水县| 曲阳县| 柞水县| 黄大仙区| 汪清县| 灵台县| 辉南县| 托克逊县| 河曲县| 隆子县| 长垣县| 平山县| 洪雅县| 东城区| 巩义市| 报价| 桐庐县| 刚察县| 吉林省| 祁阳县| 怀安县|