2017-04-21 215 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