创建一个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.html

from django.contrib.auth.views import LoginView

class CustomLoginView(LoginView):
    template_name = 'registration/login.html'

(9)创建url配置

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

from django.urls import path
from .views import SignUpView, CustomLoginView

urlpatterns = [
    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, path

urlpatterns = [
    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/ 进行登录。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科普文:一文搞懂jvm原理(二)类加载器

概叙 科普文&#xff1a;一文搞懂jvm(一)jvm概叙-CSDN博客 前面我们介绍了jvm&#xff0c;jvm主要包括两个子系统和两个组件&#xff1a; Class loader(类装载器) 子系统&#xff0c;Execution engine(执行引擎) 子系统&#xff1b;Runtime data area (运行时数据区域)组件&am…

“一带一路”再奏强音!秘鲁总统博鲁阿尔特参访苏州金龙

6月27日下午&#xff0c;首次访华的秘鲁共和国总统博鲁阿尔特一行到苏州金龙参观访问&#xff0c;受到了苏州金龙总经理黄书平的热情接待。 黄书平&#xff08;左二&#xff09;向博鲁阿尔特&#xff08;右一&#xff09;介绍苏州金龙发展情况 从苏州金龙发展历程、产品技术研…

【UE5.1】Chaos物理系统基础——02 场系统的应用

目录 步骤 一、运用临时场&#xff08;外部张力&#xff09;破裂几何体集 二、使用构造场固定几何体集 步骤 在上一篇中&#xff08;【UE5.1】Chaos物理系统基础——01 创建可被破坏的物体&#xff09;我们已经创建了可被破碎的几何体集&#xff0c;在最后我们防止几何体集…

基于K线最短路径构造的非流动性因子

下载地址https://download.csdn.net/download/SuiZuoZhuLiu/89492221

暴雨来袭,陈赫家变“水帘洞”网友:赫哥滴滴打船吗?

在魔都上海&#xff0c;一场突如其来的暴雨 不仅让街道变成了河流&#xff0c;还悄悄上演了一场现实版的“水帘洞”奇遇 而这场奇遇的主角&#xff0c;竟然是喜剧界的明星——陈赫&#xff01; 这天&#xff0c;乌云密布&#xff0c;电闪雷鸣 魔都的天空仿佛被捅了个窟窿 雨…

通过源码抽丝剥茧理解enable_shared_form_this/shared_ptr/weak_ptr智能指针实现原理

源码解析 首先先看如下简单代码,我们通过代码的顺序逐步解析 #include <iostream> #include <memory> using namespace std;class C :public enable_shared_from_this<C>{ public:C(){ std::cout<<"construct"<<endl; }~C(){ cout&l…

mqtt介绍和环境安装

Mqtt介绍 MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用&#xff0c;是专为受限设备和低带宽、高延迟或不可靠的网络而设计。 下载一个开源的emqx服务器和…

ARM功耗管理软件之时钟电源树

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理软件栈及示例&#xff1f;WFI&WFE&#xff1f;时钟&电源树&#xff1f;DVFS&AVS&#xff1f; 目录 一、时钟&电源树简介 二、时钟树示例 三、电源树示例 一、时钟&电源树简介 时钟门控与自…

iPhone苹果手机iOS18如何隐藏打开APP怎么找出来恢复隐藏APP?

iPhone苹果手机如何隐藏APP&#xff1f; 1、iPhone苹果手机上一些APP不想让别人看到可以设置为隐藏APP&#xff0c;请长按要设置隐藏的APP&#xff0c;选择需要面容ID&#xff1b; 2、然后再接着选择隐藏并需要面容ID&#xff0c;选择后手机桌面将不在显示该APP&#xff1b; i…

短剧挂载推广教程,短剧项目怎么分销推广?如何入驻平台当推广达人?达人推广的方式是怎么样的

目录 一、短剧怎么做&#xff1f; 二、在哪找资源挂?怎么挂? 1、在哪找资源挂? 2、怎么挂? 三、有哪些短剧看剧平台或者分销平台? 1&#xff1a;短剧看剧小程序怎么入驻当达人? 2&#xff1a;短剧cps分销小程序怎么入驻当达人? 一、短剧怎么做&#xff1f; 想要当…

[leetcode]minimum-absolute-difference-in-bst 二叉搜索树的最小绝对差

. - 力扣&#xff08;LeetCode&#xff09; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(null…

Meta低头,库克认错,XR回归第一性原理

图片&#xff5c;Photo by Maxim Hopman on Unsplash ©自象限原创 作者丨罗辑 2024年&#xff0c;XR的故事应该怎么讲&#xff1f; 如果从数据上看&#xff0c;这应该是个沉重的话题。 根据 IDC 报告&#xff0c;2023 年全球 VR 市场出货量下滑了 10.7%。2024 年第一…

安全为基、创新驱动,Soul App创始人张璐团队大力筑牢社交平台发展之基

随着技术的不断进步,AIGC在各个领域的应用日益广泛。在社交领域,AIGC社交为用户带来了更加高质量、个性化的社交体验,但同时也伴随着数据隐私泄露、网络诈骗和不良信息误导等风险。因此,社交平台在抓住AIGC技术发展机遇的同时,也要警惕技术所带来的风险。新型社交平台Soul App坚…

离线应用PWA-service work

1.有时候希望没有网络的时候,也可以正常的访问对应的页面,就需要用到service work 进行对应的配置,可以当页面的配置 也可以多页面的配置,单页面配置比较麻烦 就以uniapp框架为基础 来配置service work 一 配置 manifest 文件 (此manifest和uniapp 的 manifest.不是同…

网安小贴士(1)等级保护

一、定义 等保&#xff0c;即信息安全等级保护&#xff0c;根据信息系统在国家安全、经济建设、社会生活中的重要程度&#xff0c;以及信息系统遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权益的危害程度&#xff0c;将信息系统分为五个不同的安全…

[leetcode]文件组合

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<vector<int>> fileCombination(int target) {vector<vector<int>> vec;vector<int> res;int sum 0, limit (target - 1) / 2; // (target - 1) / 2 等效于 target /…

《塔瑞斯世界》国服震撼登场!AOC助力玩家开启游戏新征途!

一款真正高画质、重机制、轻数值的MMORPG大作&#xff01; 你是否厌倦了在MMORPG游戏中被“氪金大佬”碾压&#xff1f;你是否渴望一个纯粹依靠技术和策略就能获得成就感的游戏世界&#xff1f;如果你对这两个问题的答案都是肯定的&#xff0c;那么《塔瑞斯世界》或许值得你一…

二叉树遍历练习题

2.已知某二叉树的前序遍历序列为5 7 4 9 6 2 1&#xff0c;中序遍历序列为4 7 5 6 9 1 2&#xff0c;则其后序遍历序列为&#xff08; &#xff09; A.4 2 5 7 6 9 1 B.4 2 7 5 6 9 1 C.4 7 6 1 2 9 5 D.4 7 2 9 5 6 1 答案&#xff1a;C 解析&#xff1a; 通过前序遍历找…

舞会无领导:一种树形动态规划的视角

没有上司的舞会 Ural 大学有 &#x1d441; 名职员&#xff0c;编号为1∼&#x1d441;。 他们的关系就像一棵以校长为根的树&#xff0c;父节点就是子节点的直接上司。 每个职员有一个快乐指数&#xff0c;用整数 &#x1d43b;&#x1d456; 给出&#xff0c;其中1≤&…

慧翰股份毛利率下滑:股权转让纠纷引关注,研发费用率远弱同行还买楼?

《港湾商业观察》施子夫 6月11日&#xff0c;慧翰微电子股份有限公司&#xff08;以下简称&#xff0c;慧翰股份&#xff09;IPO注册申请获证监会同意&#xff0c;预计公司将很快登陆深交所创业板&#xff0c;保荐机构为广发证券。 从业绩面来看&#xff0c;过去三年&#xf…