IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【django】用户登录之判断用户是否登录【21】 -> 正文阅读

[Python知识库]【django】用户登录之判断用户是否登录【21】

一、展示?户中???

定义路由

from django.urls import path,re_path
from . import views
from django.contrib.auth.decorators import login_required

urlpatterns=[
    re_path('^register/$',views.RegisterView.as_view()),
    re_path('^usernames/(?P<username>[a-zA-Z_]{5,8})/count/$',views.UsernameCount.as_view()),
    re_path('^logout/$',views.LogoutView.as_view()),
    re_path('^phones/(?P<phone>1[3589][0-9]{9})/count/$',views.PhoneCountView.as_view()),
    re_path('^login/$',views.LoginView.as_view()),
    re_path('^usercenter/$',views.UserCenterView.as_view())
]

定义视图

import re

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
from django.views.generic.base import View
from mgproject. utils.exceptions import Forbbiden
from . models import Users
from django.db import DatabaseError
from django.contrib.auth import login,logout,authenticate
from django.shortcuts import redirect
from django.urls import reverse
from django import http

# Create your views here.
class UserCenterView(View):
    def get(self,request):
        '''
        显示用户中心页面
        :param request:
        :return:
        '''
        return render(request, 'userapp/user_center.html')

访问http://127.0.0.1:8000/login/?next=/usercenter/,进入了用户中心页面

需求:

当?户登录后,才能访问?户中?。
如果?户未登录,就不允许访问?户中?,将?户引导到登录界?。

实现?案:

需要判断?户是否登录。
根据是否登录的结果,决定?户是否可以访问?户中?。

二、is_authenticate 判断?户是否登录

介绍:
Django?户认证系统提供了?法request.user.is_authenticated()来判断?户是否登录。
如果通过登录验证则返回True。反之,返回False。
缺点:登录验证逻辑很多地?都需要,所以该代码需要重复编码好多次。

class UserCenterView(View):
    def get(self,request):
        '''
        显示用户中心页面
        :param request:
        :return:
        '''

        #判断当前访客是否登录
        if request.user.is_authenticated:
            return render(request,'userapp/user_center.html')
        else:
            return redirect(reverse('newsapp:index'))

三、login_required装饰器 判断?户是否登录

Django?户认证系统提供了装饰器login_required来判断?户是否登录。
内部封装了is_authenticate
位置:django.contrib.auth.decorators
如果通过登录验证则进?到视图内部,执?视图逻辑。
如果未通过登录验证则被重定向到LOGIN_URL配置项指定的地址。

如下配置:表示当?户未通过登录验证时,将?户重定向到登录??。

# settings/dev.py 
LOGIN_URL = '/login/'

1、装饰as_view()?法返回值
提示:
login_required装饰器可以直接装饰函数视图,但是本项?使?的是类视图。

as_view()?法的返回值就是将类视图转成的函数视图。 结论:

要想使?login_required装饰器装饰类视图,可以间接的装饰as_view()?法的返回值,以达到预期效果。

from django.urls import path,re_path
from . import views
from django.contrib.auth.decorators import login_required

urlpatterns=[
    re_path('^register/$',views.RegisterView.as_view()),
    re_path('^usernames/(?P<username>[a-zA-Z_]{5,8})/count/$',views.UsernameCount.as_view()),
    re_path('^logout/$',views.LogoutView.as_view()),
    re_path('^phones/(?P<phone>1[3589][0-9]{9})/count/$',views.PhoneCountView.as_view()),
    re_path('^login/$',views.LoginView.as_view()),
    re_path('^usercenter/$',login_required(views.UserCenterView.as_view()))
]

类视图

class UserCenterView(View):
    def get(self,request):
        '''
        显示用户中心页面
        :param request:
        :return:
        '''
        return render(request, 'userapp/user_center.html')
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:42:14  更:2022-05-01 15:43:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:19:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码