2014-01-23 5 views
1

У меня возникла странная ошибка в django при попытке аутентификации моего пользователя.authenticate() получил неожиданный аргумент ключевого слова 'username'

вот код:

views.py

from django.shortcuts import render_to_response 
from django.http import HttpResponseRedirect 
from django.template import RequestContext 
from django.core.context_processors import csrf 
from django.contrib.auth.forms import AuthenticationForm 
from django.contrib.auth import authenticate, login 

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

Она продолжает давать мне эту ошибку:

Environment: 


Request Method: POST 
Request URL: http://localhost:8000/authenticate/ 

Django Version: 1.6.1 
Python Version: 2.7.3 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'neededform') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Traceback: 
File "/usr/local/lib/python2.7/dist-packages/Django-1.6.1-py2.7.egg/django/core/handlers/base.py" in get_response 
    114.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/jarvis/django/web/web/views.py" in authenticate 
    26.  user = authenticate(username=str(username), password=password) 

Exception Type: TypeError at /authenticate/ 
Exception Value: authenticate() got an unexpected keyword argument 'username' 

Я не могу понять источник этой ошибки. кто-то сталкивается с той же проблемой?

+1

Вы также вызвали функцию аутентификации (которая принимает запрос)? Измените имя так, чтобы оно не противоречило встроенному – JamesO

ответ

10

Код: authenticate в виде вида. Это перезаписывает ссылку на импортированную функцию authenticate.

from django.contrib.auth import authenticate, login 
#        ^^^^^^^^^^^^ 

def authenticate(request): 
# ^^^^^^^^^^^^ 

Переименовать вид:

def other_view_name(request): 

Или импортировать функцию как другое имя (а также изменить вызов функции):

from django.contrib.auth import authenticate as auth 
... 

user = authenticate(...) -> user = auth(...) 

Или импортировать django.contrib.auth и используйте полное имя.

import django.contrib.auth 
... 

user = authenticate(...) -> user = django.contrib.auth.authenticate(...) 
+0

Или «import django.contrib.auth» и используйте полное имя. Однако это становится неловко. –

+0

@KarlKnechtel, Спасибо за комментарий. Я добавил это тоже. – falsetru

+0

Спасибо Mate. Это было слишком глупо. : D – Stark

Смежные вопросы