創建一個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.pswp.cn/web/37862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37862.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器的分類,主流服務器的應用場景

一、服務器分類 服務器可以按應用層次、體系架構、用途、外形等進行分類。以下是詳細說明&#xff1a; 按應用層次分類 入門級服務器&#xff1a;這些服務器一般用于小型企業或部門的簡單任務&#xff0c;如文件共享和打印服務。工作組級服務器&#xff1a;適用于中小型企業&…

html2canvas相關(生成圖片)

根據 DOM 生成對應的圖片 function export3png(row, type null) { html2canvas( document.querySelector(#bug), //要生成圖片的dom節點 {useCORS: true, }) 圖片跨域 .then((canvas) > { const saveUrl canvas.toDataURL(image/png) Canvas對象生成base64代碼 co…

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^…

uORF和non-overlap對翻譯效率的影響

以下是重疊和非重疊上游開放閱讀框&#xff08;uORFs&#xff09;對翻譯效率影響的總結&#xff1a; 重疊uORFs&#xff1a; 重疊uORFs對主要編碼區的翻譯影響更為顯著&#xff0c;因為它們直接與下游編碼序列&#xff08;CDSs&#xff09;競爭核糖體結合。重疊uORFs的翻譯起始…

在C++程序中嵌入quickjs實現C++和javascript互相調用

quickjs是一個C實現的輕量級javascript解析引擎&#xff0c;可以嵌入到C程序中&#xff0c;實現C和js代碼的交互。 以下基于quickjs-ng這一社區分支實現樣例代碼演示利用quickjs編寫程序進行C和js互相調用&#xff0c;支持linux和windows。 代碼結構 quickjs_demo- quickjs-…

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; 首先…

燒結銀到底有多牛?歡迎咨詢SHAREX善仁新材研究院

燒結銀到底有多牛&#xff1f;歡迎咨詢SHAREX善仁新材研究院 在當今日新月異的科技浪潮中&#xff0c;材料科學以其獨特的魅力引領著人類探索未知領域的步伐。在眾多前沿材料中&#xff0c;燒結銀憑借其卓越的性能和廣泛的應用前景&#xff0c;逐漸嶄露頭角&#xff0c;成為科…

創建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&…

Unix Network Programming Episode 96

‘socketpair’ Function The socketpair function creates two sockets that are then connected together. This function applies only to Unix domain sockets. #include <sys/socket.h> int socketpair(int family, int type, int protocol, int sockfd[2]);POSIX…

(十七)如何學習統計學基礎知識(學習路線)

統計學是數據科學的基本支柱。統計學的目的是幫助你理解數據并從中得出有意義的結論。在數據科學中&#xff0c;統計學在理解數據模式和趨勢、做出預測和檢驗假設方面起著至關重要的作用。 (一) 數據科學統計學習路線圖 本文為學習統計學并將其應用于數據科學提供了清晰、結構化…

如何使用 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…

記錄:有趣的C#多元運算符 ? : 表達式寫法

有時候用 if //...Whatre you she wanna go else if //...do do do else //...and i know something just like this... 感覺代碼太多了怎么優雅的、高端的替換&#xff1f; 看個高端的栗子菊&#xff1a; LedCOM["parity"] ledData[4] "N" ? …