1. 程式人生 > 其它 >Django實現使用者登入註冊

Django實現使用者登入註冊

本文將會介紹小白如何完成一個使用者登入註冊系統

新建一個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'), ]
urls.py
<!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>
login.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設不設定都可以,視情況而定
    }

}

最後makemigration和migrate遷移資料庫後即可

接下來測試一下

賬號Joker

郵箱[email protected]

密碼123456

點選註冊後會跳轉到登入介面

咱們現在回到資料庫看看有沒有咱們剛才註冊的資料

然後登陸

再次註冊相同的賬號

會顯示使用者名稱已經存在,我們到login介面,輸入一個錯誤的賬號密碼

所有功能完成,登入註冊介面就很簡約,重要就是邏輯方面,前端就不深做了。