Django身份验证初试

这篇具有很好参考价值的文章主要介绍了Django身份验证初试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用Django身份验证框架在项目中构建一个身份验证系统。
Django有一个内置的认证框架,可以处理用户认证、会话、权限和用户组。
认证系统包括登录、注销、修改密码、重置密码等常见用户操作的视图。

当你使用startproject命令创建一个新的Django项目时,这个认证框架会包含在项目的默认设置中。它由django.contrib.auth应用程序和在项目的middleware设置中找到的以下两个中间件类组成:

  • AuthenticationMiddleware:使用会话将用户与请求关联起来  
  • SessionMiddleware:处理跨请求的当前会话

认证框架还包括以下模型:

  • User:包含基本字段的用户模型;该模型的主要字段是username、password、email、first_name、last_name和is_active  
  • Group:对用户进行分类的组模型  
  • Permission:用户或组执行某些操作的标志

该框架还包括我们稍后将使用的默认身份验证视图和表单。

目录

构建登录表单类

构建登录视图方法

构建登录URL

构建登录模版


在Django项目中创建一个应用
django-admin startapp account

在setting.py文件INSTALLED_APPS中添加应用
 

INSTALLED_APPS = [

    'account.apps.AccountConfig',
    # ...

]

📌通过将account应用放在INSTALLED_APPS设置的首位,可以确保默认情况下使用这个认证模板,而不是其他应用中包含的任何其他认证模板。Django通过INSTALLED_APPS设置中应用出现的顺序来查找模板

将数据库与INSTALLED_APPS设置中包含的默认应用程序的模型同步
python manage.py migrate

构建登录表单类

创建一个新的forms.py文件

from django import forms

class LoginForm(form.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

构建登录视图方法

编辑views.py文件

from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth import authenticate,login
from .forms import LoginForm

def user_login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            user = authenticate(request,
                                username=cd['username'],
                                password=cd['password'])
            if user is not None:
                if user.is_active:
                    login(request,user)
                    return HttpResponse('Aauthenticated successfully')
                else:
                    return HttpResponse('Disabled account')
            else:
                return HttpResponse('Invalid login')
    else:

        form = LoginForm()
    return render(request,'account/login.html',{'form':form})

当使用GET请求调用user_login视图时,使用form = LoginForm()实例化一个新的登录表单,以便在模板中显示它。当用户通过POST提交表单时,我们执行以下操作:
- 使用form = LoginForm(request.POST)将提交的数据实例化表单。
- 使用form.is_valid()检查表单是否有效。
- 如果无效,将在模板中显示表单错误(例如,如果用户没有填写其中一个字段)。如果提交的数据是有效的,我们使用authenticate()方法根据数据库对用户进行身份验证。此方法接受请求对象、用户名和密码参数,如果用户已成功认证,则返回User对象,否则返回None。如果用户没有经过身份验证,返回一个原始的HttpResponse,显示Invalid login消息。
- 如果用户身份验证成功,检查用户是否活动,访问其is_active属性。这是Django用户模型的一个属性。如果用户不是活动的,我们返回一个HttpResponse,其中显示Disabled帐户消息。
- 如果用户是活跃的,将用户登录到网站。通过调用login()方法在会话中设置用户,并返回Authenticated成功消息。

📌authenticate和login之间的区别:authenticate()检查用户凭据,如果正确则返回user对象;Login()设置当前会话中的用户。

构建登录URL

创建urls.py(应用目录)

from django.urls import path,include
from . import views

urlpatterns = [

    path("login/",views.user_login,name='login'),
  
]

编辑urls.py(项目目录)

from django.contrib import admin
from django.urls import path,include


urlpatterns = [

    path("admin/", admin.site.urls),
    path("account/",include('account.urls'))

]

现在可以通过URL访问登录视图。可以为这个视图创建一个模板了。  

由于没有此项目的任何模板,因此可以从创建可由登录模板扩展的基本模板开始。在account目录下创建以下文件和目录:
templates/account/login.html
templates/base.html
 

构建登录模版

编辑base.html

{% load staticfiles %}

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'css/base.css' %}">
</head>

<body>

    <div id="header">
        <span class="logo">Bookmarks</span>
    </div>

    <div id="content">
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>

基模板定义了一个标题块和一个内容块,可以用从它扩展的模板填充内容。
编辑login.html

{% extends "base.html" %}
{% block title %}Log-in{% endblock %}
{% block content %}

    <h1>Log-in</h1>
    <p>Please, use the following form to log-in:</p>
    <form action="." method="post">
        {{ form.as_p }}
        {% csrf_token %}
        <p><input type="submit" value="Log in"></p>
    </form>

{% endblock %}

该模板包括在视图中实例化的表单。由于表单将通过POST提交,因此包含{% csrf_token %}模板标签来进行CSRF保护。文章来源地址https://www.toymoban.com/news/detail-788181.html

到了这里,关于Django身份验证初试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django笔记三十二之session登录验证操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十二之session登录验证操作 这一篇笔记将介绍 session 相关的内容,包括如何在系统中使用 session,以及利用 session 实现登录认证的功能。 这篇笔记将分为以下几个内容: session 的使用流程 session 的配置和相关方法 users 模块的

    2024年02月01日
    浏览(61)
  • Django教程第4章 | Web开发实战-三种验证码实现

    验证码的存在是为了防止系统被暴力破解攻击,几乎每个系统都有验证码。下面将介绍三种生成验证码方式。 您可以根据你自己的需要进行学习。   安装绘图依赖,利用的是画图模块  PIL  以及随机模块  random  在后台生成一个图片和一串随机数,然后保存在内存中。 编写

    2024年01月15日
    浏览(44)
  • Django笔记四十二之model使用validator验证器

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十二之model使用validator验证器 这一篇笔记介绍一下 model 里的 validator 验证器。 首先,这是个什么东西呢? 在 model 的第四篇笔记里,我们介绍了字段的一些属性,比如是否允许为空,varchar 类型的字段的最大长度等。 一般在

    2024年02月05日
    浏览(52)
  • Web实战丨基于Django与HTML的用户登录验证系统

    本期内容:基于Django与HTML的简单登录验证系统。 项目需求:Python+Django 项目下载地址:https://download.csdn.net/download/m0_68111267/88727183 登录系统在我们的日常生活中随处可见,比如当我们使用QQ、微信等社交软件时,都需要先输入自己的账号密码进行登录,本文博主将带着大家用

    2024年01月25日
    浏览(48)
  • Django的数据库操作模型的字段参数blank和null有什么区别?什么叫表单验证?

    在Django的数据库操作模型中,字段参数 blank 和 null 用于定义模型字段的验证规则和数据库约束。它们的区别如下: blank :这个参数用于验证表单数据的有效性。当字段的 blank 参数设置为 True 时,表明该字段可以为空值或者不填写任何内容,不会触发验证错误。换句话说,

    2024年02月11日
    浏览(38)
  • 【python】Django——django简介、django安装、创建项目、快速上手

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django 是一个高效、功能强大的 Web 应用程序框架,采用 Python 编写

    2024年02月20日
    浏览(51)
  • python的安装,Django的安装,Pycharm新建Django项目

    官网:https://www.python.org 官网–downloads–windows–选择对应的版本下载.exe文件 双击运行下载的安装包,按步骤进行安装 ①选择安装方式 install now,会直接默认安装到C盘中; customize installation,自定义安装,可以自行选择安装的位置 PS:无论选择哪种方式,都要记得勾选最底下

    2024年02月21日
    浏览(42)
  • Django笔记四十之运行Django环境的python脚本

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十之运行Django环境的python脚本 这一篇笔记介绍如何在 Django 中运行脚本。 假设说我们要实现一个功能,需要获取 blog.models.Blog 这张表里的总数且使用 print() 输出。 如果代码逻辑很短,且是一次性执行的操作,我们可以在系

    2024年02月04日
    浏览(44)
  • windows解决python安装django架构没有django-admin命令

    目录 一.尝试安装与配置 1.直接pip命令安装 2.用pycharm测试 3.官网下包安装 二.解决 1.找到django安装的路径 2.配置系统变量 3.测试创建项目 3.1.执行访问页面 3.2.解决 3.3.继续测试 4.pycharm打开     新建项目测试    注:发现没有django这个框架选项,后面发现这个功能只有专业版才

    2024年02月06日
    浏览(50)
  • python之app逆向破解headers中的Authorization 身份验证 AES

    下载好app 贝壳 2018-5-2 版本 1.还是先抓包 注册入口 2.用jadx-gui打开 直接用jadx-gui打开,因为没有加壳 并搜索Authorization 点击右键 查找用例 3.开始Hook 从以下可以看出: 由 Appid + COLON_SEPARATOR + c 组成的,最后 Base64 所以从第一个入参开始跟踪 String encodeToString = Base64.encodeToStri

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包