精华内容
下载资源
问答
  • Django登录模块

    2019-09-29 08:35:00
    Django登录模块 导入 from django.contrib.auth.decorators import login_required #登录验证装饰器 from django.contrib.auth.models import User from django.contrib import auth #登录 改密 注销一些的相关...

    Django的登录模块

    导入

    from django.contrib.auth.decorators import login_required   #登录验证装饰器
    from django.contrib.auth.models import User
    from django.contrib import auth  #登录 改密 注销一些的相关操作

    装饰器

    @login_required(login_url='/login/')  #装饰器  如果未登录 直接跳转 /login/
    def index(request):
        return render(request, "index.html", {'msg': '又是美好的一天'})

    注册

    def register(request):
        if request.method == 'GET':
            return render(request, 'register.html')
        else:
            username = request.POST.get('username')    #获取前端传来的帐号和密码
            pwd = request.POST.get('pwd')
    
            # User.objects.create_superuser(username=username, password=pwd, email='111@qq.com')
            User.objects.create_user(username=username, password=pwd)  #创建一个用户
        return HttpResponse('ok')

    修改密码

    @login_required(login_url='/login/')  #因为是登录之后才能改密码,所以需要登录之后改密码
    def modify(request):
        if request.method == 'GET':
            return render(request, 'modify.html')
        else:
            old_pwd = request.POST.get('oldpwd')
            new_pwd = request.POST.get('newpwd')
    
            res = request.user.check_password(old_pwd)  #检测老密码的加密结果
            if res:
                request.user.set_password(new_pwd)  #设置新的密码
                request.user.save() #一定记得保存
    
                return HttpResponse('ok')
            else:
                return render(request, 'modify.html')

    登录

    def login(request):
        if request.method == 'GET':
            return render(request, 'login.html', {'meiri': 'xixi'})
        else:
            # 获取用户名和密码
            username = request.POST.get('username')
            pwd = request.POST.get('pwd')
            print(username, pwd)
    
            myuser = auth.authenticate(request, username=username, password=pwd)  #登录帐号 成功返回帐号,失败返回None
            if myuser is not None:
                my = auth.login(request, myuser)
                return render(request, 'index.html')
            else:
                return render(request, "login.html", {'res': '登录失败!'})

    转载于:https://www.cnblogs.com/bladecheng/p/11372260.html

    展开全文
  • Django 登录/登出 模块

    千次阅读 2017-11-02 18:19:11
    Django 登录 登出

    利用 Django 自身模块 编写:

    from django.shortcuts import render, redirect
    from django.core.urlresolvers import reverse
    from django.views.decorators.http import require_http_methods
    from django.http import HttpResponse
    from django.contrib.auth import authenticate, login as d_login, logout as d_logout
    
    # 登录模块
    @require_http_methods(["GET", "POST"])
    def login(request):
        if request.method == 'GET':
            user = request.user
            if user.is_authenticated:   #如果已登录
                return redirect(reverse('slg:index'))
    
            else:
                return render(request, 'slg/login.html')
    
        if request.method == 'POST':
            userName = request.POST['userName']
            userPassword = request.POST['userPassword']
    
            user = authenticate(username=userName, password=userPassword) #django认证
            if user is not None:
                if user.is_active:  # 用户 在 Admin后台,被设置为 “激活状态”
                    d_login(request, user)   #将 登录信息 存储到 django自身的 login模块 中
                    return HttpResponse(1)
    
                else:
                    return HttpResponse(2)
    
            else:
                return HttpResponse(0)
    
    # 登出模块      
    def logout(request):
        d_logout(request)
        return redirect(reverse('slg:index'))

    之后,在各个views视图中,引用@login_required(login_url='slg:login') 装饰器即可。

    (从 from django.contrib.auth.decorators import login_required中导入)

    展开全文
  • django auth模块

    2019-09-02 16:34:10
    什么是django的auth模块 auth模块常用方法 扩展默认的auth user表 什么是django的auth模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证...

    目录:

    1. 什么是django的auth模块
    2. auth模块常用方法
    3. 扩展默认的auth user表

    什么是django的auth模块

    我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。 Django作为一个完美主义者的终极框架,它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。

    • 简单使用auth认证

      from django.contrib import auth
      def login(request):
        if request.method == 'POST':
          name = request.POST.get('name')
          pwd = request.POST.get('pwd')
          user = auth.authenticate(request,username=name,password=pwd)
          # 类似于user=models.User.objects.filter(username=name,password=pwd).first()
          if user:
            return redirect('/home/')
        return render(request,'login.html')
      
    • 只是简单的验证信息不行,还需要给当前成功登陆的用户保存登陆状态,之前是通过cookie或者session,现在呢,auth也给你提供了一个比较好用的方法

      if user:
        # 等价于request.session['name']=name
        auth.login(request,user)  # 登陆,其实就把用户信息放到session中,跑一下验证session表
      
    • 上面的验证和登陆其实不是它的亮点,亮点在于

      # 只要登陆成功执行了auth.login(request,user)
      # 之后在其他任意的视图函数中都通过request.user获取当前登陆用户对象
      
      # 当没有执行auth.login,request.user打印出来的是匿名用户。将session表数据删除即可演示改效果
      # 如何判断request.user用户是否通过auth.login登陆呢?request.user.is_authenticated
      
      # 为何执行auth.login之后,其他视图函数中就可以通过request.user拿到当前登陆对象呢?想想django的中间件中有没有一个叫Auth啥的中间件,它干了件什么事,能不能推导一下?取出session去表里面查相应的数据,然后放到request.user中,点进去看一下这个中间件确实如此
      

    回到目录



    auth模块常用方法

    • authenticate()

      提供了用户认证功能,即验证用户名以及密码是否正确,一般需要username 、password两个关键字参数。
      如果认证成功(用户名和密码正确有效),便会返回一个 User 对象。
      authenticate()会在该 User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。

      用法:

      user = authenticate(username='usernamer',password='password')
      
    • login(HttpRequest, user)

      该函数接受一个HttpRequest对象,以及一个经过认证的User对象。
      该函数实现一个用户登录的功能。它本质上会在后端为该用户生成相关session数据。

      用法:

      from django.contrib.auth import authenticate, login
      
      
      def my_view(request):
          username = request.POST['username']
          password = request.POST['password']
          user = authenticate(username=username, password=password)
          if user is not None:
              login(request, user)
              # Redirect to a success page.
              ...
          else:
              # Return an 'invalid login' error message.
              ...
      
    • logout(request)

      该函数接受一个HttpRequest对象,无返回值。
      当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。

      用法:

      from django.contrib.auth import logout
      
      
      def logout_view(request):
          logout(request)
          # Redirect to a success page.
      
    • is_authenticated()

      用来判断当前请求是否通过了认证。

      用法:

      def my_view(request):
          if not request.user.is_authenticated():
              return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
      
    • login_requierd()

      auth 给我们提供的一个装饰器工具,用来快捷的给某个视图添加登录校验。

      用法:

      from django.contrib.auth.decorators import login_required
      
      
      @login_required
      def my_view(request):
          ...
      

      若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ’ 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

      如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改。

      示例:

      # 在settings.py中添加,或者将登陆后的路径传参给装饰器
      LOGIN_URL = '/login/'  # 这里配置成你项目登录页面的路由
      
    • create_user()

      auth 提供的一个创建新用户的方法,需要提供必要参数(username、password)等。

      用法:

      from django.contrib.auth.models import User
      user = User.objects.create_user(username='用户名',password='密码',email='邮箱',...
    • create_superuser()

      auth 提供的一个创建新的超级用户的方法,需要提供必要参数(username、password)等。

      用法:

      # 从默认的auth 用户表中导入
      from django.contrib.auth.models import User
      user = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...
    • check_password(password)

      auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。
      密码正确返回True,否则返回False。

      用法:

      ok = user.check_password('密码')
      
    • set_password(password)

      auth 提供的一个修改密码的方法,接收 要设置的新密码 作为参数。
      注意:设置完一定要调用用户对象的save方法!!!

      用法:

      user.set_password(password='')
      user.save()
      

    User对象的属性

    User对象属性:username, password
    
    is_staff : 用户是否拥有网站的管理权限.
    
    is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。
    

    回到目录



    扩展默认的auth user表

    可以通过继承内置的 AbstractUser 类,来定义一个符合自己需求的Model类。
    这样既能根据项目需求灵活的设计用户表,又能使用Django强大的认证系统了。

    from django.contrib.auth.models import AbstractUser
    class UserInfo(AbstractUser):
        """
        用户信息表
        """
        phone = models.CharField(max_length=11, null=True, unique=True)
        
        def __str__(self):
            return self.username
    

    注:按上面的方式扩展了内置的auth_user表之后,一定要在settings.py中告诉Django,我现在使用我新定义的UserInfo表来做用户认证。写法如下:

    # 引用Django自带的User表,继承使用时需要设置,在settings.py中设置
    AUTH_USER_MODEL = "app名.UserInfo"
    

    再次注意:

    一旦我们指定了新的认证系统所使用的表,我们就需要重新在数据库中创建该表,而不能继续使用原来默认的auth_user表了。

    回到目录

    展开全文
  • Django auth 模块

    2019-06-19 17:21:00
    目录 一、Auth 模块是什么 二、auth 模块常用的方法 ...Auth 模块Django 自带的用户认证模块: ​ 在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录...

    一、Auth 模块是什么

    Auth 模块是 Django 自带的用户认证模块:

    ​ 在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。

    Django 内置了强大的用户认证系统 --auth,它默认 ** 使用 auth_user 表 ** 来存储用户数据。

    二、auth 模块常用的方法

    from django.contrib import auth

    2.1 authenticate()

    ​ 提供了用户认证功能,即验证用户名以及密码是否正确,一般需要 username 、password 两个关键字参数。

    ​ 如果认证成功(用户名和密码正确有效),便会返回一个 User 对象。

    ​ authenticate() 会在该 User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。

    用法:

    user_obj = authenticate(username='usernamer',password='password')

    2.2 login(HttpRequest, user)

    ​ 该函数接受一个 HttpRequest 对象,以及一个经过认证的 User 对象。

    ​ 该函数实现一个用户登录的功能。它本质上会在后端为该用户生成相关 session 数据 (存放进 session 表)。

    ​ 用法:

    from django.contrib.auth import authenticate, login
       
    def my_view(request):
      username = request.POST['username']
      password = request.POST['password']
      user_obj = authenticate(username=username, password=password)
      if user_obj is not None:
        login(request, user_obj)
        # Redirect to a success page.
        ...
      else:
        # Return an 'invalid login' error message.
        ...

    2.3 logout(request)

    ​ 该函数接受一个 HttpRequest 对象,无返回值。

    ​ 当调用该函数时,当前请求的 session 信息会全部清除。该用户即使没有登录,使用该函数也不会报错。

    ​ 用法:

    from django.contrib.auth import logout
       
    def logout_view(request):
      logout(request)
      # Redirect to a success page.

    2.4 is_authenticated()

    ​ 用来判断当前请求是否通过了认证

    ​ 用法:

    def my_view(request):
      if not request.user.is_authenticated():
        return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

    2.5 login_required()

    ​ auth 给我们提供的一个装饰器工具,用来快捷的给某个视图添加登录校验。

    ​ 用法:

    from django.contrib.auth.decorators import login_required
          
    @login_required
    def my_view(request):
      ...

    ​ 若用户没有登录,则会跳转到 django 默认的 登录 URL '/accounts/login/' 并传递当前访问 url 的绝对路径 (登陆成功后,会重定向到该路径)。

    ​ 如果需要自定义登录的 URL,则需要在 settings.py 文件中通过 LOGIN_URL 进行修改。

    LOGIN_URL = '/login/'  # 这里配置成你项目登录页面的路由

    2.6 create_user()

    ​ auth 提供的一个创建新用户的方法,需要提供必要参数(username、password)等。

    ​ 用法:

    from django.contrib.auth.models import User
    user_obj = User.objects.create_user(username='用户名',password='密码',email='邮箱',...)
    
    # 但是偷懒点的用法是:
    user_obj = User.objects.create_user(**kwargs) 
    # 通常,在校验完数据之后 user_obj.cleaned_data 里面就是键值形式的数据,此时,通过打散就可以作为参数了

    2.7 create_superuser()

    ​ auth 提供的一个创建新的超级用户的方法,需要提供必要参数(username、password)等。

    ​ 用法:

    from django.contrib.auth.models import User
    user_obj = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...)

    2.8 check_password(password)

    ​ auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。

    ​ 密码正确返回 True,否则返回 False。

    ​ 用法:

    result = user.check_password('密码')

    2.9 set_password(password)

    ​ auth 提供的一个修改密码的方法,接收 要设置的新密码 作为参数。

    ​ ** 注意:设置完一定要调用用户对象的 save 方法!!!**

    ​ 用法:

    user.set_password(password='')
    user.save()

    2.10 User 对象的属性

    ​ User 对象属性:username, password

    ​ is_staff : 用户是否拥有网站的管理权限.

    ​ is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。

    三、扩展默认的 auth_user 表

    ​ 默认的 auth_user 表字段确实很多,但是万一要是想使用更多的字段该怎么办?

    ​ 一种方法是,新建一张表,然后将二者进行关联,就可以达到了目的

    ​ 还有一种方法就是对象里面的继承了。

    ​ 仔细一看,auth_user 表本身就继承了一个类:AbstractUser,而所有的映射字段都在 AbstractUser 表里面。所以,在继承这个类的基础之上在加上自定义的映射属性就可以无法无天了。

    from django.contrib.auth.models import AbstractUser
    class UserInfo(AbstractUser):
        """用户信息表"""
        nid = models.AutoField(primary_key=True)
        phone = models.CharField(max_length=11, null=True, unique=True)
        
        def __str__(self):
            return self.username
        # 在原本 auth_user 表里面,肯定也有定义的__str__方法,而且返回的就是 self.name,不信你实例化一个对象打印一下试试,返回的肯定是 username

    ps:

    ​ 按上面的方式扩展了内置的 auth_user 表之后,一定要在 settings.py 中告诉 Django,我现在使用新定义的 UserInfo 表来做用户认证。

    并且一但指定了新的自定义的表,需要做的就是执行迁移数据库命令,在数据库中创建自定义的表,并且此时已经不能使用默认的 auth_user 表了。

    写法如下:

    # 引用 Django 自带的 User 表,继承使用时需要设置
    # AUTH_USER_MODEL = "app 名. 类名"
    AUTH_USER_MODEL = "app 名. UserInfo"

    转载于:https://www.cnblogs.com/xt12321/p/11052197.html

    展开全文
  • Django auth模块

    2019-10-09 02:38:13
    Auth模块Django自带的用户认证模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 ​...
  • Django Auth模块

    2018-11-26 22:31:00
    Auth模块Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 ...
  • 顺着读Django 的各模块源码,我们可以更灵活地更改代码以实现自己想要的功能。 现在,思考一个问题,主需求是实现博客中用户的注册登录登出功能。如果只满足于用户注册时只登记其邮箱或是用户名,Django 自带的 User...
  • 1.Django Admin模块是什么  Django的后台管理工具  读取定义的模型元数据,提供强大的管理使用页面 2.为什么需要Django Admin模块  Django Shell新增文章太复杂了  管理页面是基础设施中重要的部分  ...
  • 13 Django auth模块

    2020-06-09 21:43:16
    Django 1 auth模块 1.1 介绍 当执行数据库迁移命令后会自动创建auth_user表,用于存储用户信息。 访问admin路由后需要输入用户名和密码,用户登录数据参考的是auth_user表。 1.2 创建管理员用户(超级用户) python ...
  • Django User 模块之 AbstractUser 扩展

    千次阅读 2018-09-11 01:26:33
    顺着读Django 的各模块源码,我们可以更灵活地更改代码以实现自己想要的功能。 现在,思考一个问题,主需求是实现博客中用户的注册登录登出功能。如果只满足于用户注册时只登记其邮箱或是用户名,Django 自带的 ...
  • Django自带登录模块auth的登陆与登出

    千次阅读 2019-04-06 11:49:39
    在views.py里面引入auth模块 from django.contrib.auth import authenticate, login, logout 在views.py 里面创建三个视图函数 主页视图 登陆视图 登出视图 创建用户用于测试 python manage.py ...
  • django通过auth模块进行登录认证 注明:以下的认证得使用request对象,只要能获取到request对象,就能使用此方法 1.相关模块引入、对象、装饰器导入 from django.contrib import auth # 导入auth模块 from django....
  • django框架自带注册、登录和注销等常用的用户模块的功能。在之前的博客https://blog.csdn.net/phoenix3267/article/details/82709938,我们已经实现了注册功能,这次主要介绍一下如何实现注销功能。 django自带模块...
  • Django官网 Django源码 Django文档 一 模型model.py 使用django默认的认证系统 1. 创建超级用户 python manage.py createsuperuser 2.建立用户模型类,继承 AbstractUser from django.contrib.auth....
  • 新建项目(我使用pycharm开发,也可以使用...cmd命令行,前提需要安装django和配置系统环境变量,这里我就跳过了: django-admin startproject login 项目建好后通过cd 进入到项目目录执行以下命令: py...
  • Python-Django用户登录模块--QQ登录(一)

    千次阅读 2018-07-03 09:08:58
    QQ登录,亦即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目。若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现。注册方法可参考链接...
  • 我们学生管理之登录实现一文中已经了解了自己写一个登录逻辑的过程: 1、url配置 urlpatterns = [ url(r'^login/$', views.login), url(r'^index/$', views.index), url(r'^logout/$', views.logout), ...
  • QQ登录回调处理用户在QQ登录成功后,QQ会将用户重定向回我们配置的回调callback网址,在本项目中,我们申请QQ登录开发资质时配置的回调地址为:http://www.meiduo.site:8080/oauth_callback.html 我们在front_end_pc...
  • 返回QQ登录网址的视图1. 后端接口设计:请求方式: GET /oauth/qq/authorization/?next=xxx请求参数: 查询字符串参数名类型是否必须说明nextstr否用户QQ登录成功后进入美多商城的哪个网址返回数据: JSON{ "...
  • 绑定用户身份接口如果用户是首次使用QQ登录,则需要绑定用户,页面如下:业务逻辑:用户需要填写手机号、密码、图片验证码、短信验证码如果用户未在美多商城注册过,则会将手机号作为用户名为用户创建一个美多账户,...
  • 主要介绍了Django实现auth模块下的登录注册与注销功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 1.django用户验证模块(/django/contrib/auth/__init__.py) from django.contrib.auth import authenticate, login username = request.POST['username'] password = request.POST['password'] user = ...
  • Django创建App并简单实现登录模块 什么是Django的APP? 此APP非andriodAPP。Django的APP可以理解为一个网站中的一个模块,我们可以将每个模块都单独写成一个APP,这样可以让项目变得相对整洁且更加好维护起来。 如何...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 788
精华内容 315
关键字:

django登录模块