2017-04-21 379 views
0

我試圖使用我在.html文件中稱爲login.html的表單獲取用戶數據。該代碼是:方法不允許(POST):/ login/

<form class="register-form" method="POST" action="{% url 'login' %}"> 
    {% csrf_token %} 
    <table> 
    <tr> 
     <td>Username: </td> 
     <td><input type="username" name="username"><br></td> 
    </tr> 
    <tr> 
     <td>Password: </td> 
     <td><input type="password" name="password"><br></td> 
    </tr> 
    </table> 
    <br> 
    <input type="submit" value="Login" /> 
</form> 

我已經有了一個數據庫與一羣用戶其中username和密碼存儲。我想創建自己的登錄頁面來檢查該數據庫。我想要做的事實質上是讓用戶訪問login.html頁面,然後讓用戶輸入詳細信息並檢查數據庫。

urls.py看起來是這樣的:

from django.conf.urls import url, include 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^register$', include('register.urls')), 
    url(r'^login/', include('login.urls')), 
    url(r'^', include('home.urls')), 
] 

有效它去login.urls其中urls.py的是:

from django.conf.urls import url, include 
from django.contrib import admin 
from login import views 

urlpatterns = [ 
    url(r'^$', views.LoginPageView.as_view(), name='login'), 
] 

views.py是:

from django.shortcuts import render 
from django.views.generic import TemplateView 
from person.models import Person 

class LoginPageView(TemplateView): 
    template_name = "login.html" 
    def get(self, request, **kwargs):  
     print(request) 
     return render(request, 'login.html') 

問題是當我點擊提交按鈕,我想檢查數據庫,如果不成功,在登錄頁面顯示錯誤,否則,成功驗證用戶並將其帶到主頁。

而不是它的工作我越來越: Method Not Allowed (POST): /login/ [21/Apr/2017 14:31:12] "POST /login/ HTTP/1.1" 405 0

感謝。

+0

您正在POST請求中發送數據,並在View.py中使用基於類的視圖,並且在該類中使用get方法而不是post方法。 –

回答

3

您正在POST請求中發送數據,並在View.py中使用基於類的視圖,並且正在使用get方法而不是post方法。

views.py

from django.shortcuts import render 
from django.views.generic import TemplateView 
from person.models import Person 

class LoginPageView(TemplateView): 
    template_name = "login.html" 
    def post(self, request, **kwargs):  
     print(request) 
     return render(request, 'login.html') 

剛剛替換後您的get方法。

+0

我覺得很愚蠢。謝謝!! – Zer0