Django實現使用者登入註冊
阿新 • • 發佈:2021-10-15
本文將會介紹小白如何完成一個使用者登入註冊系統
新建一個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 ='urls.pylogin'), 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="login.htmltext-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>register.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>歡迎登陸</h1> </body> </html>index.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) # 郵箱User/models.py
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')User/views.py
切記配置好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設不設定都可以,視情況而定 } }