Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django登录get AuthenticationForm不包含get_Python_Django - Fatal编程技术网

Python django登录get AuthenticationForm不包含get

Python django登录get AuthenticationForm不包含get,python,django,Python,Django,我试图构建一个简单的登录表单,但我总是得到“AuthenticationForm”对象没有属性“get”。我是使用django框架的新手,但我不确定如何解决这个问题。。。在不改变太多逻辑的情况下有什么建议吗 view.py from django.shortcuts import render, redirect from django.views.generic import TemplateView from django.contrib.auth import authenticate

我试图构建一个简单的登录表单,但我总是得到
“AuthenticationForm”对象没有属性“get”
。我是使用django框架的新手,但我不确定如何解决这个问题。。。在不改变太多逻辑的情况下有什么建议吗

view.py

from django.shortcuts import render, redirect
from django.views.generic import TemplateView
from django.contrib.auth import authenticate
from django.contrib.auth.forms import AuthenticationForm
from django.http import HttpResponse

class loginPage(TemplateView):
    template_name = 'login.html'
    def post(self, request):
        form = AuthenticationForm(request, data=request.POST)
        if form.is_valid():
            user = authenticate(
                request,
                username=form.get('email'),
                password=form.get('password')
            )

            if user is not None:
                return HttpResponse("Testing")
            else:
                print(user)
        else:
            return HttpResponse("loginPage") ## always goes here
登录html

<form method="post">
{% csrf_token %}
<input class="form-control" name="email" placeholder="Email" /></div>
<input class="form-control" type="password" name="password" placeholder="Password" />
</form>```

{%csrf_令牌%}
```

如果由于
form
对象不是字典实例而导致出现错误,请尝试使用
form.cleaned\u data.get('email')

此外,我相信如果您使用django提供的generic
LoginView
而不是
TemplateView
,代码会少得多。这里有一个同样的例子

url.py

from django.contrib.auth.views import LoginView

urlpatterns = [
    path('login/', LoginView.as_view(template_name="users/login.html"), name='login'),
您可以自定义这方面的每个方面,在上面的示例中,我刚刚使用了自定义模板,而不是使用django的默认模板,类似地,您也可以通过将
authentication\u form
设置为适当的表单类来使用自己的表单


欲了解更多信息,请查看官方文档,而不是使用get-try-using
form.cleaned_data['key']
@error404我还试图更改为
username=form.cleandata['email'],
或`
username=form.cleandata['email'],
,,但是似乎没有任何东西起作用
cleandata
cleanded_data
不同,这是评论者正确建议您使用的。我的输入看起来像
username=form.cleanded_data['email']
,和
password=form.cleanded_data['password'],
,但它仍然是相同的错误您也可以尝试这个
form.instance.email
或尝试这个
form.data['email']
,老实说,与上面相同,但看起来我是在请求post,但发送get,但
form
是post,并且是相同的pythonlogin@AmitPatel,如果您能在回答中添加一些解释,那就太好了:)
from django.contrib.auth.views import LoginView

urlpatterns = [
    path('login/', LoginView.as_view(template_name="users/login.html"), name='login'),