Всем привет! Пожалуйста, помогите с проблемой. Вот код вьюхи:
def get_base_context(prm):
site_title = SiteTitle.objects.get()
header_nav = Category.objects.exclude(title='Новости')
disco = Disco.objects.all()
disco_name = Disco.objects.filter(category_id=2).first()
socnet = SocNetButtons.objects.all()
username = get_user(prm).username
context = dict(
site_title=site_title,
header_nav=header_nav,
disco=disco,
disco_name=disco_name,
socnet=socnet,
username=username
)
return context
def user_login(request):
context = get_base_context(request)
context.update(csrf(request))
if request.POST:
username = request.POST['username']
password = request.POST['password']
print(username)
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('/')
else:
Из-за чего вылетает:
Environment:
Request Method: POST
Request URL: http://localhost:8000/login/
Django Version: 1.8
Python Version: 3.4.0
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cannibal_corpse',
'embed_video',
'sorl.thumbnail')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/home/andrey/django/venv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/andrey/django/mydjangoproject/cannibal_corpse/views.py" in user_login
90. password = request.POST['password']
File "/home/andrey/django/venv/lib/python3.4/site-packages/django/utils/datastructures.py" in __getitem__
322. raise MultiValueDictKeyError(repr(key))
Exception Type: MultiValueDictKeyError at /login/
Exception Value: "'password'"
Если написать password = request.POST.get('password', '') (аналогично и username), то эта ошибка не вылетает, но user is not None = False, если password = request.POST['password'], то выскакивает MultiValueDictKeyError,
но в shell'e user is not None = True. Что не нравится, не понимаю?
Updated 11 May 2015, 13:22 by AndreyBlokhin.