Django---Django登錄案例


  前面也寫了關於視圖,模型,模塊,地址之間的簡單邏輯關系,也每個都舉了說明了。通常見到最多的web頁面都會有登錄,今天我們先通過前面學到的內容,簡單的寫一個登錄頁面

需求文檔

在我們測試的時候也首先要了解到需求,這里我們先明確一個需求。進入到一個登錄頁面輸入正確的賬號密碼,直接跳轉到安靜博客頁面,如果賬號密碼錯誤,就在登錄頁面報錯提示賬號密碼失敗。需求很簡單,但是也首先要有思路。

思路

1、首先在寫一個登錄的前端頁面。

2、判斷輸入的賬號名是否正確

3、賬號名正確的話直接跳轉到安靜博客頁面

4、賬號名錯誤的話提示賬號密碼錯誤

小試牛刀

話不多說,我們思路弄明白了,可以開始寫了

登錄頁面

利用上次我們寫的那個簡單的登錄頁面(安靜沒有寫過前端,都是東湊湊,西拼拼,先這樣看着~~)

注意:

1、這里我們用戶名和密碼必須后面有name='xxx'參數,進行返回給后端;

2、 <form action="/login2/" method="post"> 我們這里返回的頁面為當前頁面,如果密碼錯誤的話,也停留在這個頁面,請求方式為POST

login2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首頁</title>
</head>
<body>
    <h1>
        <p style="text-align:center" font size="2">歡迎來到安靜的博客:</p>
    </h1>
    <h1>
        <p style="text-align:center">請輸出賬號密碼:</p>
    </h1>
    <form action="/login2/" method="post">
        {% csrf_token %}
        <p style="text-align:center">用戶:<input type="text" name="username" /><br />
        </p>
        <p style="text-align:center">密碼:<input type="password" name="password" /><br />
        <input type="submit" value="登錄" />

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

判斷賬號密碼正確與錯誤

這里沒有添加數據庫,就直接先把賬號密碼寫死了。(后續繼續優化)

view.py

# 導入redirect模塊,直接請求頁面 from django.shortcuts import render,redirect def login2(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') # 判斷賬號密碼 if username == 'Anjing' and password == '1234': # 正確后返回到安靜博客頁面,也可以返回到指定頁面 return redirect('https://www.cnblogs.com/qican/') else: #密碼錯誤先不寫 pass return render(request,'login2.html')

編寫url對應關系

urls.py

from django.urls import path
from Anjing import views
# 完成對應關系
urlpatterns = [
    path('login2/', views.login2),
]

直接啟動Django調試登錄成功效果

可以看到輸入賬號密碼正確后,直接跳轉到了安靜的博客,然后如果登錄失敗的話,繼續停留在這個頁面。

需求已經就只剩下一個賬號密碼錯誤,返回提示了,這個怎么弄呢?思考前面的內容,返回前端數據,我們可以在html中定義一個參數項,然后報錯直接返回

添加報錯參數

其中 <p style="color: red;text-align: center">{{ error_msg }}</p> 表示展現錯誤內容

其中Django模板語言格式: {{ 變量名 }} 

login2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首頁</title>
</head>
<body>
    <h1>
        <p style="text-align:center" font size="2">歡迎來到安靜的博客:</p>
    </h1>
    <h1>
        <p style="text-align:center">請輸出賬號密碼:</p>
    </h1>
    <form action="/login2/" method="post">
        {% csrf_token %}
        <p style="text-align:center">用戶:<input type="text" name="username" /><br />
        </p>
        <p style="text-align:center">密碼:<input type="password" name="password" /><br />
        <input type="submit" value="登錄" />
          <p style="color: red;text-align: center">{{ error_msg }}</p>

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

視圖中也需要添加錯誤內容

views.py

from django.shortcuts import render,redirect

def login2(request):
    # 定義一個錯誤為空
    error_msg = ''
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 判斷賬號密碼
        if username == 'Anjing' and password == '1234':
            # 正確后返回到安靜博客頁面,也可以返回到指定頁面
            return redirect('https://www.cnblogs.com/qican/')
        else:
            # 如果賬號密碼錯誤直接報錯
            error_msg = '用戶名或密碼錯誤,請重新輸入'
    return render(request,'login2.html',{'error_msg':error_msg})

重新啟動Django,查看登錄失敗效果

寫到這里會發現,我們的需求已經全部完成了。

新知識

這里引入了一個新的知識點就是redirect模塊,前面我們還用到了HttpResponse,render。那么這3個之間有什么區別嗎?

1、 HttpResponse的應用場景:返回一個指定的字符串

2、render的應用場景:返回一個HTML文件

3、 redirect的應用場景:跳轉到指定的頁面

 


免責聲明!

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



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