Форум сайта python.su
Всем привет! Пожалуйста, помогите с проблемой. Вот код вьюхи:
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', '')
password = request.POST['password']
Отредактировано Razlagutt (Май 11, 2015 13:29:18)
Офлайн
RazlaguttОчевидно, пароля нет в реквесте.
Exception Value: “'password'”
print(request.POST)
Офлайн
FishHook
Ну судя по скрину так и есть. Он вместо пароля цепляет csrf_token. Но это странно в шаблоне вроде все правильно.
<form action="{% url 'user_login' %}" method="POST" class="form-horizontal" role="form"> {% csrf_token %} <div class="form-group"> <label for="username" class="col-sm-2 control-label">Логин</label> <div class="col-sm-10"> <input type="text" name="username" class="form-control" id="username" placeholder="Логин"> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">Пароль</label> <div class="col-sm-10"> <input type="password" class="form-control" id="password" placeholder="Пароль"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label> <input type="checkbox"> Запомнить меня </label> </div> </div> </div> {% if login_error %} <div class="form-group"> <label class="error col-md-12">{{ login_error }}</label> </div> {% endif %} <div class="form-group"> <div class="col-sm-offset-2 col-sm-10 group-inline"> <button type="submit" class="btn btn-default">Войти</button> <a href="#">Зарегистрироваться</a> <!--button type="submit" class="btn btn-default">Зарегистрироваться</button--> </div> </div> </form>
Прикреплённый файлы: Снимок экрана от 2015-05-11 14:30:58.png (19,0 KБ)
Офлайн
У каждого элемента input должен быть атрибут name, у вашего пароля его нет, поэтому в ПОСТ он не передаётся.
Офлайн
FishHookКапеееееееееееец!
У каждого элемента input должен быть атрибут name, у вашего пароля его нет, поэтому в ПОСТ он не передаётся.
Офлайн