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

郵箱Joker@126.com

密碼123456

點擊注冊后會跳轉到登錄界面

 

 咱們現在回到數據庫看看有沒有咱們剛才注冊的數據

 

 然后登陸

 

 

 

再次注冊相同的賬號

 

 

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

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM