Один вопрос о принятом на данный момент ответе:
form = LoginForm(request=request, data=request.POST)
означает, что передача запроса, по-видимому, позволяет Django проверять, был ли тестовый cookie успешным перед началом сеанса. Проблема заключается в том, что если вы не установили тестовый файл cookie ранее (он должен быть задан в предыдущем запросе на просмотр), он потерпит неудачу и ваш логин не удастся. Я рекомендую просто передать аргумент ключевого слова данных следующим образом:
form = LoginForm(data=request.POST)
Если я не пропустил что-то важное (не похоже, что проверка файлов cookie абсолютно необходима), это работает лучше в большинстве ситуаций. В качестве альтернативы вы можете вызвать request.set_test_cookie () в представлении, которое загружает страницу входа, но это не охватывает все сценарии.