Django---Django登陸案例

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

需求文檔

在咱們測試的時候也首先要了解到需求,這裏咱們先明確一個需求。進入到一個登陸頁面輸入正確的帳號密碼,直接跳轉到安靜博客頁面,若是帳號密碼錯誤,就在登陸頁面報錯提示帳號密碼失敗。需求很簡單,可是也首先要有思路。前端

思路

一、首先在寫一個登陸的前端頁面。web

二、判斷輸入的帳號名是否正確數據庫

三、帳號名正確的話直接跳轉到安靜博客頁面django

四、帳號名錯誤的話提示帳號密碼錯誤後端

小試牛刀

話很少說,咱們思路弄明白了,能夠開始寫了post

登陸頁面

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

注意:優化

一、這裏咱們用戶名和密碼必須後面有name='xxx'參數,進行返回給後端;url

二、 <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個之間有什麼區別嗎?

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

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

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

相關文章
相關標籤/搜索