Django---Django註冊登陸數據保存數據庫

  前面寫了一篇關於登陸的案例,當時案例把登陸的帳號密碼都寫死了,若是帳號密碼正確就登陸到安靜的博客中,若是失敗就提示用戶名或者密碼錯誤。這裏咱們完善一下注冊和登陸而且同步給數據庫html

需求內容

進入到註冊頁面,完成註冊後,數據同步到數據庫中,而後跳轉到登陸頁面,若是註冊帳號存在就返回提示用戶已存在,帳號密碼正確登陸成功後跳轉到安靜博客園地址,失敗的話就提示用戶名密碼錯誤python

註冊頁面

其中{{ 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>

數據添加到數據庫

咱們須要建立一個數據庫,把註冊的信息用戶名,郵箱,密碼添加到數據庫中,須要建立對用的表。其中建立了一個自生成的主鍵django

# 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文件中建立一個函數,把註冊的內容寫進去post

# 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/ 進入到註冊頁面,輸入想要註冊的用戶名帳號,點擊註冊,直接跳轉到了登陸頁面url

若是註冊用戶名存在的話,直接報用戶名已經存在spa

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

登陸流程

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

# 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,也是初學者,若是有錯誤的或者不懂的歡迎你們留言,咱們共同窗習~

相關文章
相關標籤/搜索