Войти из оболочки на сайте Django - PullRequest
3 голосов
/ 07 февраля 2011

Мой сайт 1.2.3 django использует contrib.auth, и моя цель - использовать командную строку wkhtmltopdf для печати страницы только для входа в систему, wkhtml может справиться с этой ситуацией .

Итак, я проверил логин с curl , чтобы убедиться, что это возможно
Проблема в том, что я всегда получаю ошибки защиты 403 CSRF (или cookie).
I 'мы пытались отключить CSRF при втором входе в систему:

from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.views import login

@csrf_exempt
def fakelogin(request, template_name='registration/login.html'):
    return login(request, template_name)

Это новое представление работает, как и ожидалось.Затем, как уже упоминалось, здесь :

curl -c cookies.txt http://dev.local:8000/fakelogin/
curl -c cookies.txt -d login.txt http://dev.local:8000/fakelogin/

с login.txt, содержащим username=Bob&password=secret&next=/page_to_print/id/

Но ошибка CSRF 403 по-прежнему появляется (и я недействительно знаю, связано ли это с CSRF или сессионными куки в его точке ...)

1 Ответ

3 голосов
/ 07 февраля 2011

Чтобы отключить CSRF, просто удалите CSRFMiddleWare в вашем файле settings.py.Но не забудьте поставить его обратно после теста.

Возможно, вы захотите в будущем использовать что-то вроде twill , чтобы упростить тестирование вашей страницы, поскольку она обрабатывает такие вещи, как пропуск формы, анализ ссылок, печенье и перенаправления для вас.

...