2017-09-12 127 views
0

我在我的models.py中有一個類「用戶」...用戶有幾個屬性,如用戶名,用戶名,密碼等。這是我的登錄頁面的login.html的一部分用我自己的登錄表單在django中驗證用戶名和密碼

<form action="" method="post" enctype="multipart/form-data"> 
       <h1>Login Form</h1> 
<div> 
        <label><b>Username</b></label> 
        <input type="text" id="username" placeholder="Enter username" required="">     
       </div> 

       <div class="password"> 
        <label id="labelp"><b>Password</b></label> 
        <input type="text" required="" placeholder="Enter password" id="password"> 
       </div> 

       <div class="submitb"> 
        <input type="submit" value="Log In"> 

       </div> 
</div> 

我想從這裏獲取該用戶名和密碼,並希望它針對我的用戶表中的值,我有身份驗證(用戶名和密碼)然後登錄用戶。我怎麼做?

回答

0

使用Django提供的登錄視圖(django.contrib.auth.views.login)。您可以將您的模板使用下列條目連接到登錄視圖urls.py

url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': '/login.html'}), 
+0

然後它能夠​​使用我創建的'用戶'表進行身份驗證嗎? – Shefali

+0

@Shefali不,這會使用默認的django'User'模型。你爲什麼創建自己的用戶表?我強烈建議擴展現有模型,而不是試圖重新發明輪子。特別是對於用戶身份驗證,現有代碼庫中存在大量內置安全性。 – rawbeans

+0

我擁有的是一個更大的事物的一部分...所以我必須保留這個'用戶'表......謝謝反正。 – Shefali

0

您可以登錄使用您的形式,記得在你輸入的形式和名稱添加{%crsf_token%}。

從django.contrib.auth進口身份驗證,登錄

def my_view(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(request, username=username, password=password) 
    if user is not None: 
     login(request, user) 
     # Redirect to a success page. 
     ... 
    else: 
     # Return an 'invalid login' error message. 
     ... 

這就是視圖,所以你得到的字段,然後使用功能進行身份驗證,以獲取用戶,如果用戶名和密碼是正確的登錄;如果沒有返回無效的登錄錯誤。你可以看到更多here