一尘不染

在Django中使用AuthenticationForm

django

我正在尝试将AuthenticationForm表单与django一起使用,并发现我似乎无法获取该表单进行验证。我把它简化为一个似乎无效的简单测试(假设它是正确的)。有人可以在这里看到问题吗?

>>> from django.contrib.auth.forms import AuthenticationForm
>>> POST = { 'username': 'test', 'password': 'me', }
>>> form = AuthenticationForm(POST)
>>> form.is_valid()
False

是否存在无法验证的真实原因?我使用不正确吗?我已经按照django自己的登录视图对其进行了建模。


阅读 999

收藏
2020-04-02

共2个答案

一尘不染

尝试:

form = AuthenticationForm(data=request.POST)
2020-04-02
一尘不染

AuthenticationForm的第一个参数不是数据!完全没有:

def __init__(self, request=None, *args, **kwargs):

因此,这就是为什么你必须将req.POST传递给数据或在第一个参数中传递其他内容的原因。已经在此处使用的答案之一中说明了这一点:

AuthenticationForm(data=req.POST)

你也可以使用以下之一:

AuthenticationForm(req,req.POST)
AuthenticationForm(None,req.POST)
2020-04-02