Django中判斷用戶是否登錄


1.is_authenticate 判斷用戶是否登錄

介紹:

  • Django用戶認證系統提供了方法request.user.is_authenticated()來判斷用戶是否登錄。
  • 如果通過登錄驗證則返回True。反之,返回False。
  • 缺點:登錄驗證邏輯很多地方都需要,所以該代碼需要重復編碼好多次。
class UserInfoView(View):
    """用戶中心"""

    def get(self, request):
        """提供個人信息界面"""
        if request.user.is_authenticated():
            return render(request, 'user_center_info.html')
        else:
            return redirect(reverse('users:login'))

2. Django框架判斷登陸的簡化方案:

使用 LoginRequiredMixin 實現:

使用方法:在需要登錄才能訪問的視圖中繼承這個類,然后在setting.py中配置LOGIN_URL = '登錄的url'就行了

from django.contrib.auth.mixins import LoginRequiredMixin

class UsernameCountView(LoginRequiredMixin, View):
# 判斷用戶是否登錄,沒有登錄后重定向到登錄頁面的url
LOGIN_URL='/login/'

訪問這個視圖后,會先判斷是否登錄,如果未登錄會重定向到配置中LOGIN_URL的url

為了實現登錄后定位到未登錄時訪問的地址,在登錄的接口中,判斷next屬性,如果有,重定向到next所指向的位置

# 響應登錄結果
next = request.GET.get('next')
if next:
    response = redirect(next)
else:
    response = redirect(reverse('contents:index'))

原理:LoginRequiredMixin中在實現重定向到登錄頁面時,會在登錄的url中拼接上 ?next="當前訪問地址"   這樣,在登錄接口我們就可以獲取到這個地址,從而在登錄成功后重定向到這個地址

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM