Это потому, что перенаправление на представление пропускает исходный контекст, который вы используете для визуализации страницы.
Вы упускаете просто простую логику здесь. Вы пытаетесь снова отобразить тот же шаблон, но без списка news_article.
Полагаю (в первую очередь), вы визуализируете шаблон, который показывает вам Статьи, а также форму входа, отправив две вещи: 1. Форма входа и 2. Список статей.
Но во-вторых, когда пользователь не может пройти аутентификацию, вы больше не пропускаете одни и те же вещи. Передайте эти переменные снова в качестве контекста (вы также можете добавить сообщение об ошибке, если ваша форма не обрабатывает сообщения об ошибках).
if user.is_authenticated():
#show success view
else:
return render_to_response('same_template.html', {
'error_msg': 'Username or password you provided was incorrect',
'news_articles': NewsArticles.objects.all()[:3],
'login_form': LoginForm(request.POST);
})
Редактировать: Реальность такова, что контекст используется для визуализации шаблона, и он несет полную ответственность за этот шаблон, за то, что он хочет передать в дальнейшей навигации. И как я вижу, если вы не передаете что-то дальше, вы не получаете это дальше.
Если вам нужен какой-то автоматизированный контекст, разработайте свой собственный контекстный процессор, например, auth-context-processor , который автоматически добавляется как «пользователь», всегда доступный для шаблона.
И, между прочим, вы все равно пропустите такой контекст, даже если вход в систему аутентифицирован. Поэтому, если этот конкретный контекст действительно важен, либо попробуйте отправить первичные ключи статей вместе с отправкой формы входа в систему, либо сохраните их в глобальном (самая уродливая вещь), либо просто пересмотрите и разделите поток (я думаю, это хорошо). 1016 *