Django用户身份验证完成示例代码

yizhihongxing

关于Django用户身份验证完成示例代码,我们可以大概分为以下两个部分进行讲解:

  1. 认证机制设置

在开始编写代码前,我们需要先在Django工程下设置好认证机制。具体做法如下:

(1)在settings.py文件中找到INSTALLED_APPS(已安装应用列表)这个配置项,在其中添加django.contrib.auth模块。

(2)在settings.py文件末尾添加以下内容:

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

这将使得用户在登录成功或登出成功后都默认跳转到网站首页,你可以根据实际需求进行修改。

  1. 示例代码

下面是两个示例代码,分别是用户注册和登录的示例,其中两段代码都涉及到用户身份验证的步骤。

(1)用户注册的示例代码:

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import auth, messages

def register(request):
    if request.method == 'POST':
        # 获取用户输入的注册信息
        username = request.POST['username']
        email = request.POST['email']
        password1 = request.POST['password1']
        password2 = request.POST['password2']

        # 校验两次输入的密码是否相同
        if password1 == password2:
            try:
                # 创建新用户
                user = User.objects.create_user(username, email, password1)
                user.save()
                auth.login(request, user)  # 自动登录
                messages.success(request, '注册成功')
                return redirect('/')
            except:
                messages.error(request, '注册失败,请稍后再试')
        else:
            messages.error(request, '两次输入的密码不相同')
    return render(request, 'register.html')

在这段示例代码中,我们创建了一个register函数来处理用户注册的相关请求。在用户POST提交了注册信息之后,我们首先获取到用户在表单中填写的相关信息,然后校验两次输入的密码是否相同(password1 == password2)。如果校验通过,我们使用Django的内置User模型的create_user方法来创建新用户对象,然后调用user.save()来保存到数据库中。接着,我们调用auth.login(request, user)自动登录该新用户,同时使用messages.success()向用户反馈一个注册成功的消息,并跳转到首页。如果出现异常,则调用messages.error()向用户提示注册失败的消息。如果两次输入的密码不相同,则会调用messages.error()提示用户密码不匹配。

(2)用户登录的示例代码:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages

def user_login(request):
    if request.method == 'POST':
        # 获取用户输入的登录信息
        username = request.POST['username']
        password = request.POST['password']

        # 校验登录信息
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            messages.success(request, '登录成功')
            return redirect('/')
        else:
            messages.error(request, '用户名或密码错误')
    return render(request, 'login.html')

在这段示例代码中,我们创建了一个user_login函数来处理用户登录请求。在用户POST提交了登录信息之后,我们首先获取到用户在表单中填写的相关信息,然后使用Django的内置authenticate方法来校验用户输入的用户名和密码,如果校验通过,我们再调用login方法将用户信息保存到请求对应的session中,同时使用messages.success()向用户反馈一个登录成功的消息,并跳转到首页。如果用户名或密码错误,则会调用messages.error()向用户提示登录失败的消息。

以上就是示例代码的完整攻略,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django用户身份验证完成示例代码 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django 创建数据库的基本操作

    创建的时候 在app下的 models.py 文件下 ,注意 model.py 名字不能修改 使用mysql的童鞋,在django 默认使用的是 mysqldb, 但是,py3 里面没有,需要import pymysql。 以下的代码都是 views.py 中的代码, url自己做对应吧。 在 项目名的目录下 的__init__.py 文件中 ,写上如下代码…

    Django 2023年4月11日
    00
  • django model content_type 使用

    一.关于content_type 使用 1.引入模块在models from django.db import models from django.contrib.contenttypes.models import ContentType #使用ContentType from django.contrib.contenttypes.fields imp…

    Django 2023年4月12日
    00
  • django有哪些好处和优点

    Django是一个用于Web应用程序开发的高级Python框架。它具有以下好处和优点: 1. 快速开发 Django 提供了一系列迅速完成 Web 应用程序开发的工具。Django 的模板语言和自动化管理工具可以帮助开发者快速地建立并部署 Web 应用程序。此外,Django 还包含了许多自带的模块,可以快速解决常见的问题,例如用户认证、数据库操作、URL …

    Django 2023年5月15日
    00
  • Django Redis配合Mysql验证用户登录

    1.redis_check.py # coding:utf-8 import pymysql import redis import sys def con_mysql(sql): db = pymysql.connect(host=’192.168.8.102′, user=’root’, passwd=’root’, port=3306, db=’tes…

    Django 2023年4月9日
    00
  • Django框架(十九)–Django rest_framework-认证组件

    一、什么是认证 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 二、利用token记录认证过的用户 1、什么是token token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上…

    Django 2023年4月16日
    00
  • 搭建python django虚拟环境完整步骤详解

    下面我将详细讲解“搭建python django虚拟环境完整步骤详解”的完整攻略,包含两条示例说明。 搭建Python Django虚拟环境完整步骤详解 什么是Python Django虚拟环境 Python是一门非常流行的编程语言,而Django则是Python下的一种Web开发框架。在开发Django项目时,我们需要保证环境的稳定性,避免不同项目之间互相…

    Django 2023年5月16日
    00
  • django中model下都有哪些方法

    通过名称检索模型的单个字段实例 _meta.get_field()返回给定一个字段名称的字段实例,如果没有找到具体给定的字段,将会引发一个FieldDoesNotExist 异常 from django.contrib.auth.models import User >>>User._meta.get_field(‘username’) &…

    Django 2023年4月13日
    00
  • Django 学习之CORS

    跨域 跨域指的就是“跨域资源共享(Cross-Origin Resource Sharing, CORS)”,是一个“W3C标准”,当一个资源从与该资源本身所在的服务器的不同域或者不同端口请求一个资源时,就会发起一个跨域HTTP请求。 说到跨域,肯定就要讲一下 同源策略(Same origin policy),该策略是由Netscape(网景)公司在1995…

    Django 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部