Django 項目6:表單與認證系統

目錄

1、form 表單

2、session 保存狀態

3、Admin 后臺

4、Auth 系統


1、form 表單

(1)創建 form.py 文件,并完善

from django import forms# 定義一個表單類
class Register(forms.Form):user = forms.CharField(max_length=30, label='用戶名')pw = forms.CharField(label='密碼', min_length=6, max_length=8,widget=forms.PasswordInput(attrs={'placeholder': '請輸入你的密碼:'}),error_messages={'min_length': '密碼小于6位', 'max_length': '密碼大于8位'})repw = forms.CharField(label='請再次輸入密碼', widget=forms.PasswordInput())phone = forms.RegexField(regex='^1\d{10}$', label='手機號',error_messages={'invalid': '收入的手機號格式不對'})email = forms.EmailField(label='電子郵箱')

2、session 保存狀態

(1)狀態保存

  • http協議是無狀態的:每次請求都是一次新的請求,不會記得之前通信的狀態
  • 客戶端與服務器端的一次通信,就是一次會話實現狀態保持的方式:在客戶端或服務器端存儲與會話有關的數據
  • 存儲方式包括cookie、session,會話一般指session對象
  • 使用cookie,所有數據存儲在客戶端,注意不要存儲敏感信息
  • 使用session方式,所有數據存儲在服務器端,在客戶端cookie中存儲session_id
  • 狀態保持的目的是在一段時間內跟蹤請求者的狀態,可以實現跨頁面訪問當前請求者的數據

? ? ? ?注意:不同的請求者之間不會共享這個數據,與請求者一一對應

(2)創建 session 狀態

# user和pw是session的鍵,u和p是變量名
request.session['user'] = u
request.session['pw'] = p

(3)查找?session 狀態

# 第一個是需要查找的鍵,第二個是沒找到鍵時返回空的值
user = request.session.get('user', '')
user = request.session.get('pw', None)
# 獲取鍵
keys = request.session.keys()
# 獲取值
values = request.session.values()
# 獲取session_key
session_key = request.session.session_key

(4)刪除?session 狀態

del user  # 刪除對應鍵值對的值
request.session.clear()  # 刪除數據,但是會記錄保持
request.session.flush()    # 直接清空

(5)setting 中設置會話(session)管理參數

# 是否關閉瀏覽器就關閉session
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
# 是否每次請求都報錯session
SESSION_SAVE_EVERY_REQUEST = False
# 設置cookie及session的失效時間,默認位兩周,單位為秒
SESSION_COOKIE_AGE = 1209600

3、Admin 后臺

(1)注冊 admin ,在 manage.py 中執行下面代碼設置 Admin 后臺的用戶名和密碼

createsuperuser

(2)在 App 的 admin.py 中注冊模板

from django.contrib import admin# Register your models here.from demo1.models import User# 注冊模版方法1
# admin.site.register(User)# 注冊模版方法2
# @admin.register(User)  # 啟動方法1class Useradmin(admin.ModelAdmin):# 設置展示字段list_display = ['id', 'user', 'pw']# 使用 user 來跳轉到修改界面list_display_links = ['user']admin.site.register(User, Useradmin)  # 啟動方式2

4、Auth 系統

(1)介紹

  • User:User是auth模塊中維護用戶信息的關系模式(繼承了models.Model),數據庫中該表被命名為auth_user。
  • Group:User對象中有一個名為groups的多對多字段,多對多關系由auth_user_groups數據表維護。Group對象可以通過user_set反向查詢用戶組中的用戶。
  • Permission:Django的auth系統提供了模型級的權限控制,即可以檢查用戶是否對某個數據表擁有增(add), 改(change), 刪(delete)權限。

(2)功能

  • create_user 創建用戶
  • authenticate 驗證登錄
  • login 記住用戶的登錄狀態
  • logout 退出登錄
  • is_authenticated 判斷用戶是否登錄
  • login_required 判斷用戶是否登錄的裝飾器

? ? ? ?login_required的使用:

# 第一種跳轉路由的方式
@login_required(login_url='需要跳轉的路由')# 第二種跳轉路由的方式(在steeing最后添加以下代碼)
LOGIN_URL = '需要跳轉的路由'

    (3)例子(創建登錄的視圖函數)

    def cl_login(request):if request.method == 'POST':u = request.POST.get('user')p = request.POST.get('pw')print(u, p)if User.objects.filter(username=u):print(User.objects.all())user = authenticate(username=u, password=p)# 用戶是否存在if user:# 判斷賬號是否激活if user.is_active:# 將用戶對象添加到當前會話(session)中login(request, user)# return HttpResponse('登錄成功')return redirect(reverse('demo1:index'))else:return HttpResponse('用戶未激活')else:return HttpResponse('用戶密碼或者用戶名不正確')return render(request, 'demo1/demo3.html')

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/news/921907.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/news/921907.shtml
    英文地址,請注明出處:http://en.pswp.cn/news/921907.shtml

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

    相關文章

    tvm/triton/tensorrt比較

    1.tvm的主線感覺更新太慢,文檔太落后,在自動駕駛領域不支持Blackwell平臺,跨平臺其實吹牛的更多。我覺得自動駕駛用不起來。2.性能最快的還是tensorrt/tensorrt_llm這條路,純cuda路線面臨大量cuda算子開發,比如vllm ll…

    Transform 和BERT、GPT 模型

    目錄 Transform的由來 Seq2seq 模型 Transform 的內部結構 語言模型 BERT 介紹 BERT 模型的組成 分詞器 位置編碼 Softmax 殘差結構 BERT 模型總結 Transform的由來 傳統的語?模型,?如RNN(循環神經?絡),就像?個“短…

    2025高教社國賽數學建模A題參考論文35頁(含代碼和模型)

    2025國賽數學建模競賽A題完整參考論文 目錄 摘要 1 問題背景與重述 2 問題分析 2.1 問題一分析 2.2 問題二分析 2.3 問題三分析 2.4 問題四分析 2.5 問題五分析 3 符號說明 4 模型假設 5 模型建立與求解 5.1 問題一 煙幕有效遮蔽時長…

    【Linux】常用命令匯總

    【Linux】常用命令【一】tar命令【1】可用參數【2】常用案例(1)創建歸檔(打包)(2)查看歸檔內容:??(3)解包歸檔 (提取):??【二】日志查看命令【1】基礎命令…

    軟考系統架構設計師之軟件系統建模

    一、軟件系統建模 系統建模流程包括如下: 二、人機交互設計 黃金三法則: 1、置于用戶控制之下以不強迫用戶進入不必要的或不希望的動作的方式來定義交互方式 提供靈活的交互 允許用戶交互可以被中斷和撤銷 當技能級別增加時可以使交互流水化并允許定制交…

    Linux系統學習之注意事項及命令基本格式

    哈嘍,你好啊,我是雷工!你要是翻過歷史文章的話,肯定特別疑惑:這神經病搞得這個號到底是啥定位,究竟是分享啥類型的,咋亂七八糟的啥都有。真是個雜貨鋪啥都有,咋又開始分享Linux系統了…

    0基礎Java學習過程記錄——枚舉、注解

    一、枚舉1.基本介紹(1)枚舉對應英文 enumeration,簡寫為 enum(2)枚舉是一組常量的集合(3)可以理解為:枚舉屬于一種特殊的類,里面只包含一組有限的特定的對象2.實現方式&a…

    高效計算的源泉:深入淺出馮諾依曼模型與操作系統的管理藝術 —— 構建穩定、高效的應用基石 【底層邏輯/性能優化】

    ???~~~~~~歡迎光臨知星小度博客空間~~~~~~??? ???零星地變得優秀~也能拼湊出星河~??? ???我們一起努力成為更好的自己~??? ???如果這一篇博客對你有幫助~別忘了點贊分享哦~??? ???如果有什么問題可以評論區留言或者私信我哦~??? ??????個人…

    性能測試-jmeter9-邏輯控制器、定時器壓力并發

    課程:B站大學 記錄軟件測試-性能測試學習歷程、掌握前端性能測試、后端性能測試、服務端性能測試的你才是一個專業的軟件測試工程師 性能測試-jmeter邏輯控制器、定時器妙用IF控制器**IF 控制器的作用**循環控制器循環控制器的作用ForEach控制器ForEach 控制器的作用…

    T:線段樹入門(無區間更新)

    線段樹.線段樹介紹.線段樹框架.理解線段樹.圖式整個過程.線段樹代碼逐層解析.代碼匯總.leetcode練習.線段樹介紹 線段樹(SegmentTree)\;\;\;\;\;\;\;\;線段樹(SegmentTree)線段樹(SegmentTree) is 用于高效處理區間查詢和單點修改的數據結構,和樹狀數組很像&#xf…

    【ISP】Charlite工具實操

    實習一周了&#xff0c;參與了客觀拍攝和測試&#xff0c;復習一下nv工具 BLACK LEVEL&#xff08;黑電平&#xff09; eg&#xff1a; $ nv_ob 0 in_dir <input directory> out_name <ob file> nv_ob 0 in_dir D:\study\nvraw\ob1 out_name D:\study\nvraw\my_out…

    普藍機器人 AutoTrack-IR-DR200 外設配置全指南

    為什么外設配置對機器人研究如此重要&#xff1f;在當今機器人技術飛速發展的時代&#xff0c;高校學生研究團隊正成為創新的重要力量。無論是參加機器人競賽、開展畢業設計&#xff0c;還是進行學術研究&#xff0c;正確配置和使用外設設備都是成功的關鍵。尤其學生組裝一個服…

    8、Python性能優化與代碼工程化

    學習目標&#xff1a;掌握Python程序性能分析和優化的通用方法&#xff0c;建立工程化開發的規范意識&#xff0c;為后續AI項目開發奠定堅實的編程基礎在數據科學和AI開發中&#xff0c;代碼性能往往決定了項目的可行性。一個處理時間從幾小時縮短到幾分鐘的優化&#xff0c;可…

    【算法--鏈表】117.填充每個節點的下一個右側節點指針Ⅱ--通俗講解

    通俗算法講解推薦閱讀: 【算法–鏈表】83.刪除排序鏈表中的重復元素–通俗講解 【算法–鏈表】刪除排序鏈表中的重復元素 II–通俗講解 【算法–鏈表】86.分割鏈表–通俗講解 【算法】92.翻轉鏈表Ⅱ–通俗講解 【算法–鏈表】109.有序鏈表轉換二叉搜索樹–通俗講解 【算法–鏈…

    分詞器(Tokenizer)總結(89)

    分詞器(Tokenizer)總結 分詞器(Tokenizer) 分詞器的詞表(vocabulary)長度通常短于模型嵌入層(embedding layer)的長度。 結束標記(EOS token)應僅用于標記文本結尾,不可用于其他用途。 填充標記(PAD token)通常未預先定義,但你仍可能需要用到它: 對于生成式模型…

    19 webUI應用中 Controlnet精講(05)-圖像修復與編輯

    前面的篇章已經詳細講解了線條約束、三維關系與空間深度、人體姿態等幾類controlnet的功能與應用&#xff0c;本節內容將對通過controlnet對圖像修復與編輯進行講解。 通過controlnet也可以對圖片進行編輯、重繪及放大等操作&#xff0c;具體包括Recolor、Inpaint、Tile等&…

    消息推送的三種常見方式:輪詢、SSE、WebSocket

    摘要&#xff1a;本文介紹消息推送的三種常見方式&#xff1a;輪詢&#xff08;定時請求&#xff0c;易增負擔&#xff09;與長輪詢&#xff08;阻塞請求至有數據 / 超時&#xff0c;減少請求&#xff09;、SSE&#xff08;HTTP 單向實時傳輸&#xff0c;純文本、自動重連&…

    論文閱讀:ACL 2024 Stealthy Attack on Large Language Model based Recommendation

    總目錄 大模型相關研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2402.14836 https://www.doubao.com/chat/19815566713551106 文章目錄速覽攻擊方法速覽一、攻擊核心目標與前提1. 核心目標2. 攻擊前提二、模型無關的簡單…

    自動駕駛中的傳感器技術43——Radar(4)

    本文對目前毫米波雷達中的天線設計進行比較全面的羅列&#xff0c;并進行簡單的設計評述 1、實際設計案例 圖1 涵蓋能寬窄覆蓋的天線設計&#xff08;無俯仰分辨率&#xff09;圖2 Bosch前雷達的天線設計&#xff08;有俯仰的分辨率但比較弱&#xff0c;也涵蓋了擴展覆蓋&…

    使用反轉法線材質球,實現切換天空盒相同的功能,優點:包體變小

    切換天空盒第一步先把SKY 天空球資源導入到工程里&#xff0c; 第二步&#xff1a;天空球文件下的SKY預制件拖入到場景里 第三步 選著SKY材質球&#xff0c;拖入自己的全景圖片(圖片分辨率不能超過5000*5000&#xff0c;否則手機無法顯示) 如果并沒有效果&#xff0c;看看圖…