Django---Django注冊登錄數據保存數據庫


  前面寫了一篇關於登錄的案例,當時案例把登錄的賬號密碼都寫死了,如果賬號密碼正確就登錄到安靜的博客中,如果失敗就提示用戶名或者密碼錯誤。這里我們完善一下注冊和登錄並且同步給數據庫

需求內容

進入到注冊頁面,完成注冊后,數據同步到數據庫中,然后跳轉到登錄頁面,如果注冊賬號存在就返回提示用戶已存在,賬號密碼正確登錄成功后跳轉到安靜博客園地址,失敗的話就提示用戶名密碼錯誤

注冊頁面

其中{{ error_name }}表示接收錯誤提示內容

# register.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>
        <input type="submit" value="注冊" />

          <p style="color: red;text-align: center">{{ error_name }}</p>

</form>
</body>
</html>

數據添加到數據庫

我們需要創建一個數據庫,把注冊的信息用戶名,郵箱,密碼添加到數據庫中,需要創建對用的表。其中創建了一個自生成的主鍵

# model.py

from
django.db import models class User(models.Model): id = models.AutoField(primary_key=True) # 創建一個主鍵 username = models.CharField(max_length=32) # 用戶名 password = models.CharField(max_length=32) # 密碼 email = models.CharField(max_length=32) # 郵箱

在創建完表后,千萬不要忘記同步數據庫,輸入下面兩條命令

# 同步數據庫
python manage.py makemigrations

# 創建數據庫
python manage.py migrate

注冊存儲數據庫中

在views.py文件中創建一個函數,把注冊的內容寫進去

# views.py 

from django.shortcuts import render,redirect
from Anjing import models

def register(request):
    # 定義一個錯誤提示為空
    error_name = ''
    if request.method=='POST':
        user = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        user_list = models.User.objects.filter(username=user)
        if user_list :
            # 注冊失敗
            error_name = '%s用戶名已經存在了' % user
            # 返回到注冊頁面,並且把錯誤信息報出來
            return  render(request,'register.html',{'error_name':error_name})
        else:
            # 數據保存在數據庫中,並返回到登錄頁面
            user = models.User.objects.create(username=user,
                                       password=password,
                                       email=email)
            user.save()
        # 同ip下跳轉
return redirect('/login/')
return render(request,'register.html')

同樣也需要在urls.py文件中映射我們的地址

# urls.py

from django.contrib import admin
from django.urls import path
from Anjing import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.login),    # 登錄
    path('register/', views.register),    # 注冊
]

啟動Django http://127.0.0.1:8000/register/ 進入到注冊頁面,輸入想要注冊的用戶名賬號,點擊注冊,直接跳轉到了登錄頁面

如果注冊用戶名存在的話,直接報用戶名已經存在

打開數據庫查看數據已經入庫了

登錄流程

前面已經寫過一個登錄流程了,但是沒有獲取數據庫的數據,改下上一篇的代碼把寫死的賬號密碼,直接與數據庫進行對比,如果存在就登錄成功,如果失敗就提示用戶名密碼錯誤

# view.py

from django.shortcuts import render,redirect
from Anjing import models

def login(request):
    # 定一個為空的錯誤接收
    error_msg = ''
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 判斷數據庫中有沒有賬號密碼
        ret = models.User.objects.filter(username=username, password=password)
        if ret:
            # 登錄到安靜博客
            return redirect('https://www.cnblogs.com/qican/')
        else:
            # 登錄失敗
            error_msg = '用戶名或密碼錯誤,請重新輸入!'
    return render(request, 'login.html', {'error_msg':error_msg})

再次啟動Django輸入 http://127.0.0.1:8000/login/ 進行輸入剛才的賬號密碼可以看到已經登錄到安靜的博客園中了

如果這里輸入錯誤的賬號密碼的話就會提示用戶名密碼錯誤

這里就把注冊和登錄的數據都是有數據庫中提取了。

 

PS:流程和代碼可能有點亂,沒有寫過多少Django,也是初學者,如果有錯誤的或者不懂的歡迎大家留言,我們共同學習~

 


免責聲明!

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



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