创建一个Django用户认证系统

目录

  • 1、Django
  • 2、Django用户认证系统
    • User 模型:
    • Authentication 视图:
    • 认证后端 (Authentication Backends):
    • Form 类:
    • 中间件 (Middleware):
    • 权限和组 (Permissions and Groups):
  • 3、创建一个django用户认证系统
    • (1)创建和激活虚拟环境
    • (2)安装Django
    • (3)创建Django应用
    • (4)检查Django安装
    • (5)创建Django项目
    • (5)配置自定义用户模型
    • (6)更新settings.py文件
    • (7)创建和应用迁移
    • (8)创建注册和登录视图
    • (9)创建url配置
      • 在 myapp/urls.py 文件中定义 URL 路径:
      • 在 myproject/urls.py 文件中包含应用的 URL 路径:
    • (10)创建模板
      • 创建模板文件夹和模板文件:
      • 创建 myapp/templates/registration/signup.html 文件:
    • (11)运行服务器
    • (12)在浏览器中访问http://127.0.0.1:8000/accounts/signup/ 进行注册,访问 http://127.0.0.1:8000/accounts/login/ 进行登录。

1、Django

Django 是一个由 Python 编写的高级 Web 框架,旨在快速开发和干净、实用的设计。它鼓励使用模块化和可复用的代码,使得开发和维护复杂的网站变得更加容易
特点:
1. 快速开发:
Django 允许开发者在很短的时间内从设计到成品。
2. 可重用性:
Django 提供了大量的可重用代码库(Django apps),这些库可以轻松地集成到项目中。
3. 安全性:
Django 有助于开发者避免常见的安全漏洞,如 SQL 注入、跨站脚本攻击和跨站请求伪造等。
4. 可扩展性:
Django 的模块化设计使其易于扩展和自定义。
5. 良好的文档:
Django 拥有详尽且更新及时的文档,对开发者非常友好

2、Django用户认证系统

Django 自带一个强大的用户认证系统,提供了用户登录、注册、密码管理等功能。这个系统包含以下主要部分:

User 模型:

Django 提供了一个默认的 User 模型,其中包含了基本的用户信息,如用户名、密码、电子邮件等。
可以通过 django.contrib.auth.models.User 访问。

Authentication 视图:

Django 提供了现成的视图用于处理用户登录、注销、密码重置等。
例如,LoginView、LogoutView、PasswordChangeView 和 PasswordResetView。

认证后端 (Authentication Backends):

Django 允许使用自定义认证后端,以支持不同的认证机制(如 LDAP、OAuth 等)。
默认使用的是基于用户名和密码的认证后端。

Form 类:

Django 提供了用于处理用户注册和登录的表单类,如 UserCreationForm 和 AuthenticationForm。

中间件 (Middleware):

Django 提供了 AuthenticationMiddleware,用于将用户的认证状态与每个请求关联起来。

权限和组 (Permissions and Groups):

Django 提供了基于对象级别的权限系统,可以对用户和组分配不同的权限。
使用 Permission 和 Group 模型可以创建复杂的权限管理系统。

3、创建一个django用户认证系统

(1)创建和激活虚拟环境

# 进入项目目录
cd C:\Users\USERNAME\myproject
# 创建虚拟环境
python -m venv myenv
# 激活虚拟环境(Windows)
myenv\Scripts\activate

(2)安装Django

pip install django

在这里插入图片描述

(3)创建Django应用

python manage.py startapp myapp

(4)检查Django安装

pip show django

在这里插入图片描述

(5)创建Django项目

django-admin startproject myproject
cd myproject
如果你仍然无法运行 django-admin,可能是因为环境变量配置不正确。可以手动将 Python 的 Scripts 文件夹路径添加到系统的 PATH 环境变量中。步骤如下:
打开控制面板,搜索 “环境变量”。
点击 “编辑系统环境变量”。
在系统属性窗口中,点击 “环境变量”。
在系统变量部分找到并选择 Path 变量,然后点击 “编辑”。
点击 “新建”,然后添加你的 Python Scripts 文件夹路径,例如 C:\Python39\Scripts 或 C:\Users<你的用户名>\AppData\Local\Programs\Python\Python39\Scripts。
确认并保存所有更改。

(5)配置自定义用户模型

from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):phone_number = models.CharField(max_length=15, blank=True, null=True)

from django.contrib.auth.models import AbstractUser
这行代码从 Django 的认证框架中导入了 AbstractUser 类。AbstractUser 是一个抽象基类,提供了完整的用户认证系统所需的字段和方法。
from django.db import models
这行代码导入了 Django 的模型模块,模型是 Django 中用于定义数据库表结构的类
class CustomUser(AbstractUser)
这行代码定义了一个名为 CustomUser 的类,该类继承自 AbstractUser。继承 AbstractUser 意味着 CustomUser 将拥有 AbstractUser 提供的所有字段和方法。
phone_number = models.CharField(max_length=15, blank=True, null=True)
这行代码为 CustomUser 类添加了一个名为 phone_number 的新字段。该字段是一个字符字段,最大长度为 15,可以为空 (blank=True 表示表单验证时可以为空,null=True 表示数据库中该字段可以存储空值)。

(6)更新settings.py文件

INSTALLED_APPS = [# ... 其他已安装的应用 ...'myapp','django.contrib.auth','django.contrib.contenttypes',
]
AUTH_USER_MODEL = 'myapp.CustomUser'

(7)创建和应用迁移

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

(8)创建注册和登录视图

from django.contrib.auth.forms import UserCreationForm#这是Django自带的一个表单类,用于创建新用户。它包含了用户名、密码和密码确认字段
from django.urls import reverse_lazy
from django.views import generic
#用户注册页面
class SignUpView(generic.CreateView):form_class = UserCreationForm#指定使用UserCreationForm表单#reverse_lazy是Django URL处理的一部分,reverse_lazy用于延迟计算URL直到它真正需要的时候。这里用于在用户成功注册后重定向到登录页面success_url = reverse_lazy('login')#指定表单提交成功后重定向的URL,这里重定向到login页面。template_name = 'registration/signup.html'#指定渲染的模板文件,这里是registration/signup.htmlfrom django.contrib.auth.views import LoginViewclass CustomLoginView(LoginView):template_name = 'registration/login.html'

(9)创建url配置

在 myapp/urls.py 文件中定义 URL 路径:

from django.urls import path
from .views import SignUpView, CustomLoginViewurlpatterns = [path('signup/', SignUpView.as_view(), name='signup'),path('login/', CustomLoginView.as_view(), name='login'),
]

在 myproject/urls.py 文件中包含应用的 URL 路径:

from django.contrib import admin
from django.urls import include, pathurlpatterns = [path('admin/', admin.site.urls),path('accounts/', include('myapp.urls')),
]

(10)创建模板

创建模板文件夹和模板文件:

mkdir -p myapp/templates/registration

创建 myapp/templates/registration/signup.html 文件:

<!DOCTYPE html>
<html>
<head><title>Sign Up</title>
</head>
<body><h2>Sign Up</h2><form method="post">{% csrf_token %}{{ form.as_p }}<button type="submit">Sign Up</button></form>
</body>
</html>

(11)运行服务器

python manage.py runserver

(12)在浏览器中访问http://127.0.0.1:8000/accounts/signup/ 进行注册,访问 http://127.0.0.1:8000/accounts/login/ 进行登录。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MNIST手写字体识别(算法基础)

快教程 10分钟入门神经网络 PyTorch 手写数字识别 慢教程 【深度学习Pytorch入门】 简单回归问题-1 梯度下降算法 梯度下降算法 l o s s x 2 ∗ s i n ( x ) loss x^2 * sin(x) lossx2∗sin(x) 求导得&#xff1a; f ‘ ( x ) 2 x s i n x x 2 c o s x f^(x)2xsinx x^…

Cesium大屏-vue3注册全局组件

1.需求 说明&#xff1a;产品经理要求开发人员在地图大屏上面随意放置组件&#xff0c;并且需要通过数据库更改其组件大小&#xff0c;位置等&#xff1b;适用于大屏组件中场站视角、任意位置标题等。 2.实现 2.1GlobalComponents.vue 说明&#xff1a;containerList可以通…

python基础语法 004-2流程控制- for遍历

1 遍历 1.1 什么是遍历&#xff1f; 可以遍历的元素&#xff1a;字符串、列表、元组、字典、集合字符串是可以进行for 循环。&#xff08;容器对象&#xff0c;序列&#xff09;可迭代对象iterable 例子&#xff1a; 1 &#xff09;、for遍历字符串&#xff1a; name xiao…

RK3568驱动指南|第十五篇 I2C-第167章 I2C上拉电阻

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

SpringBoot实现图片添加水印

提示&#xff1a;今日完成图片添加水印功能 后续可能还会继续完善这个功能 文章目录 目录 文章目录 前端部分 后端 Xml Controller层 Sercive层 Service实现层 Config配置层 application.properties 文件后缀名获取 常量定义 前端部分 <!DOCTYPE html> <htm…

WIN11,如何同时连接有线网络与WLAN无线网络

之前写了两篇文章&#xff0c;一篇是双网卡多网卡时win11如何设置网卡优先级_多网卡设置网卡优先级-CSDN博客 另一篇是win11 以太网和WLAN冲突 连接网线时导致WiFi掉线 解决_win11 以太网和wifi不能同时生效-CSDN博客 这篇是对上面两篇的补充&#xff1a;主要解决电脑重启后&…

语音芯片TD5580,USB小音响芯片—拓达半导体

有时候电脑的声卡会出现损坏的问题&#xff0c;给我们的生活带来了很多麻烦。这时候&#xff0c;我们就需要一款方便易用的产品来解决声卡问题。USB声卡小音响就是为了解决这个问题而设计的一款便捷的产品。它不仅可以作为一个小音响&#xff0c;让您在工作和娱乐的时候享受高品…

docker-compose搭建minio对象存储服务器

docker-compose搭建minio对象存储服务器 最近想使用oss对象存储进行用户图片上传的管理&#xff0c;了解了一下例如aliyun或者腾讯云的oss对象存储服务&#xff0c;但是呢涉及到对象存储以及经费有限的缘故&#xff0c;决定自己手动搭建一个oss对象存储服务器&#xff1b; 首先…

创建XCOM窗体和跳转连接

Xcom 窗体&#xff1a; (groupBox组合框&#xff0c;comboBox下拉框) xcom代码&#xff1a; namespace _01_作业 {// 1kb 1024B 1200B// 1MB public partial class Form1 : Form{public List<string> botelv new List<string> { "600","1200&…

如何使用 SPM 插件从 Pkl 配置文件生成 Swift 接口

文章目录 前言示例展示 Pkl 配置生成 Swift 绑定手动安装和使用 pkl-gen-swift创建 SPM 命令插件加载 Pkl 配置总结前言 Pkl(全称为 Pickle)是苹果推出的一种全新的专用于配置的编程语言。它允许开发人员通过类型和内置验证安全、直观地设计数据模型。 作为苹果语言,Pkl 有…

Python容器 之 列表--下标和切片

列表的切片 得到是 新的列表字符串的切片 得到是 新的字符串 如果下标 不存在会报错 list1 [1, 3.14, "hello", False] print(list1)# 获取 列表中 第一个数据 print(list1[0]) # 1# 获取列表中的最后一个数据 print(list1[-1]) # [False]# 获取中间两个数 即 3.1…

3.2ui功能讲解之graph页面

本节重点介绍 : graph页面target页面flags页面status页面tsdb-status页面 访问地址 $ip:9090 graph页面 autocomplete 可以补全metrics tag信息或者 内置的关键字 &#xff0c;如sum聚合函数table查询 instante查询&#xff0c; 一个点的查询graph查询调整分辨率 resolutio…

Study--Oracle-05-Oracler体系结构

一、oracle 体系概览 Oracle数据库的体系结构通常包括以下主要组件&#xff1a; 1、实例&#xff08;Instance&#xff09;&#xff1a;运行数据库的软件环境&#xff0c;包括内存结构&#xff08;SGA&#xff09;和进程结构&#xff08;Background Processes and User Proces…

Django 一对多关系

1&#xff0c;创建 Django 应用 Test/app9 django-admin startapp app9 2&#xff0c;注册应用 Test/Test/settings.py 3&#xff0c;添加应用路由 Test/Test/urls.py from django.contrib import admin from django.urls import path, includeurlpatterns [path(admin/,…

数据资产安全策略的定制化之道:深入了解各企业独特需求,量身打造个性化的数据资产保护方案,确保数据安全无虞,助力企业稳健发展

目录 一、引言 二、企业数据资产安全现状分析 &#xff08;一&#xff09;数据安全风险多样化 &#xff08;二&#xff09;传统安全措施难以满足需求 &#xff08;三&#xff09;企业数据资产安全意识亟待提高 三、定制化数据资产安全策略的重要性 &#xff08;一&#…

natvicat为什么连不上linux上的mysql?

老规矩&#xff0c;废话不多说&#xff0c;直接上教程。 号外&#xff0c;数据库管理工具领域的知名品牌Navicat&#xff0c;推出其免费版本——Navicat Premium Lite&#xff0c;用户可从Navicat官网下载体验这款软件。 https://www.navicat.com.cn/download/navicat-premium-…

【HALCON】如何实现hw窗口自适应相机拍照成像的大小

前言 在开发一个喷码检测软件的时候碰到相机成像和hw窗体的大小不一致&#xff0c;hw太小显示不完全成像的图片&#xff0c;这使得成像不均匀&#xff0c;现场辨别起来比较不直观&#xff0c;因此需要对其进行一个调整。 解决 省略掉读取图片的环节&#xff0c;我们只需要将…

ruoyi—cloud 新建模块+生成代码

1.复制一个模块——修改名字 2.打开模块下的yml文件&#xff0c;修改端口号和名字 &#xff08;1&#xff09;修改一个名字 &#xff08;2&#xff09;打开yml文件 &#xff08;3&#xff09;修改端口号&#xff0c;不要重复 &#xff08;4&#xff09;改名字和模块一致 3.…

41、web基础和http协议

web基础与http协议 一、web web&#xff1a;就是我们所说得页面&#xff0c;打开网页展示得页面。&#xff08;全球广域网&#xff0c;万维网&#xff09; world wide webwww 分布式图形信息系统 http&#xff1a;超文本传输协议 https&#xff1a;加密的超文本传输协议…

猫冻干可以天天喂吗?喂冻干前要了解的必入主食冻干榜单

近年来&#xff0c;冻干猫粮因其高品质而备受喜爱&#xff0c;吸引了无数猫主人的目光&#xff0c;对于像我这样的养猫达人来说&#xff0c;早已尝试并认可了冻干喂养。然而&#xff0c;对于初入养猫行列的新手们来说&#xff0c;可能会有疑问&#xff1a;什么是冻干猫粮&#…