本文將會介紹小白如何完成一個用戶登錄注冊系統
新建一個Django項目,名字為login_register,並且使用命令manage.py startapp.User(名字自己隨便起)
最終django項目結構如下圖所示
forms.py是之前通過form表單寫的注冊功能,可以忽略這個py文件

from django.urls import path from User import views urlpatterns = [ # path('admin/', admin.site.urls), path('login/',views.login,name ='login'), path('index/',views.index,name = 'index'), path('register/',views.register,name = 'register'), ]

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登錄</title> </head> <body> <h1> <p style="text-align:center">登錄</p> </h1> <center> <form action="" method="post"> {% csrf_token %} <p style="text-align:center">用戶:<input type="text" name="username" /></p> <p style="text-align:center">密碼:<input type="password" name="password"/></p> <p style="text-align:center"> <input type="submit" value="登錄" /> <p style="color: #ff0000;text-align: center">{{error}}</p> </form> </body> </html>

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注冊</title> </head> <body> <h1> <p style="text-align:center">新用戶注冊</p> </h1> <center> <form action="" method="post"> {% csrf_token %} <p style="text-align:center">用戶:<input type="text" name="username" /></p> <p style="text-align:center">郵箱:<input type="text" name="email"/> </p> <p style="text-align:center">密碼:<input type="password" name="password"/></p> <p style="text-align:center"> <input type="submit" value="注冊" /> <p style="color: #ff0000;text-align: center">{{error_name}}</p> </form> </body> </html>

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>歡迎登陸</h1> </body> </html>

from django.db import models # Create your models here. class WangUser(models.Model): username = models.CharField(max_length=32,unique=True) # 用戶名 password = models.CharField(max_length=32) # 密碼 email = models.CharField(max_length=32) # 郵箱

from django.shortcuts import render, redirect,HttpResponse from django.shortcuts import render # Create your views here. from User import models from .forms import UserReg def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') obj_user = models.WangUser.objects.filter(username=username, password=password) if obj_user: return redirect('index') error = '用戶名和密碼錯誤' return render(request, 'login.html', locals()) def index(request): return render(request, 'index.html') def register(request): if request.method == 'POST': username = request.POST.get('username') email = request.POST.get('email') password = request.POST.get('password') user_list = models.WangUser.objects.filter(username=username) error_name = [] if user_list: error_name = '用戶名已經存在' return render(request,'register.html',{'error_name':error_name}) else: username = models.WangUser.objects.create(username=username,password=password,email=email) username.save() return redirect('login') return render(request,'register.html')
切記配置好settings中的數據庫,我用的是mysql,配置好后在數據庫中創建相應的表。
settings Mysql設置代碼
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 使用mysql數據庫的都是這個,不變 'NAME': 'XXXXX', # 使用的數據庫名稱 'USER': 'XXXX', # 登錄mysql數據庫的用戶名稱 'PASSWORD': 'XXXXXX', # 登錄mysql數據庫的用戶密碼 'HOST': '127.0.0.1', # 表明使用的是本地mysql數據庫 'PORT': '3306', # 端口號 'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'} # 指明innodb設不設置都可以,視情況而定 } }
最后makemigration和migrate遷移數據庫后即可
接下來測試一下
賬號Joker
郵箱Joker@126.com
密碼123456
點擊注冊后會跳轉到登錄界面
咱們現在回到數據庫看看有沒有咱們剛才注冊的數據
然后登陸
再次注冊相同的賬號
會顯示用戶名已經存在,我們到login界面,輸入一個錯誤的賬號密碼
所有功能完成,登錄注冊界面就很簡約,重要就是邏輯方面,前端就不深做了。