日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part49)--用Django自带的User模型类进行模拟登录

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part49)--用Django自带的User模型类进行模拟登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


用Django自帶的User模型類進行模擬登錄


基于上個Blog中學習的用戶認證系統,我們再用Django自帶的User模型類,進行模擬登錄(模擬登錄的意思就是沒有真正的登錄,不涉及session和cookies)。


第一步


創建新的APP, 并添加路由信息


我們在mywebsite_bookstore項目下創建一個APP,叫myuser:

python manage.py startapp myuser

在settings.py中的INSTALLED_APPS列表中添加myuser應用:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','bookstore','userinfo','myuser', ]

我們在myuser應用中創建一個新的urls.py文件,并敲入如下代碼:

from django.urls import re_path from . import viewsurlpatterns = [re_path(r'^login/$', views.mylogin),]

在主urls.py中,添加myuser應用的路由:

from django.urls import re_path from django.contrib import admin from django.conf.urls import include from . import viewsurlpatterns = [re_path(r'^admin/', admin.site.urls),re_path(r'^myuser/', include('myuser.urls')), ]

第二步


新建模板文件夾templates/myuser,創建登錄頁面的模板文件,并創建視圖函數login


在myuser應用下新建一個模板文件夾templates,再建立一個myuser文件夾,在里面創建2個模板文件:


login.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>登陸</title> </head> <body> <form action="/myuser/login/" method="POST">{% csrf_token %}<div><lable>用戶名</lable><input type="text" name="username"value="{{ username }}"></div><div><lable>密碼</lable><input type="password" name="password"></div><div><lable for="id_remember">記住密碼</lable><input type="checkbox" name="remember" id="id_remember"value="1"></div><div><input type="submit" value="登陸"></div></form></body> </html>

在myuser應用下的views.py模塊中,我們創建新的視圖函數mylogin:

def mylogin(request):if request.method == "GET":return render(request, 'myuser/login.html', locals())elif request.method == "POST":username = request.POST.get('username', '')password = request.POST.get('password', '')try:user = models.User.objects.get(username = username)if user.check_password(password):return HttpResponse("登陸成功...")else:return HttpResponse("登錄失敗...")except:return HttpResponse("沒有此用戶...")

在這個視圖函數中,我們不僅檢查了用戶是否存在,還檢測了在用戶存在條件下輸入的密碼是否正確。


注意,這里的models.User.objects.get(username = username)是從mysql的mybookstore數據庫的auth_user數據表中提取的數據,我們來簡單看一下這個數據表中的數據:

mysql> select id, username, email, is_superuser from auth_user; +----+------------+----------------------+--------------+ | id | username | email | is_superuser | +----+------------+----------------------+--------------+ | 1 | goatbishop | goatbishop@gmail.com | 1 | +----+------------+----------------------+--------------+ 1 row in set (0.00 sec)

第三步


進行模擬登錄


現在,我們開啟服務,并向http://127.0.0.1:8000/myuser/login發起請求,并填入用戶名和密碼:

點擊登錄:

顯示登錄失敗…ARE YOU OK?

不應該啊,難道是我記錯密碼了?

我重新輸入一個密碼,結果登錄成功了,果然是我記錯密碼了:

總結

以上是生活随笔為你收集整理的Django(part49)--用Django自带的User模型类进行模拟登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。