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模型类进行模拟登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原生家庭对个人成长及性格的影响
- 下一篇: Django(part50)--Web请