Войти из оболочки на сайте Django

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

Поэтому я протестировал вход с помощью curl, чтобы убедиться, что это возможно.
Проблема в том, что я всегда получаю ошибку 403 CSRF (или файла cookie).
Я пытался отключить 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/

Но ошибка 403 CSRF все еще появляется (и я действительно не знаю, связано ли это с CSRF или файлами cookie сеанса в его точке...)


person Dominique Guardiola    schedule 07.02.2011    source источник


Ответы (1)


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

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

person e-satis    schedule 07.02.2011
comment
Отключение CSRF не вариант. curl — это просто более простой способ проверить успешность входа в систему, я, конечно, тоже мог бы использовать саржу. - person Dominique Guardiola; 07.02.2011
comment
Я предложил это (как временную меру) только потому, что я читал, что пытался отключить CSRF со вторым входом в систему в вашем вопросе. Очевидно, вы не хотите отключать это в prod. Twill, безусловно, лучший способ, поскольку он ДЕЙСТВИТЕЛЬНО прост в использовании и может быть установлен с помощью easy_install одной командой. - person e-satis; 07.02.2011
comment
спасибо за вашу помощь, но я не хочу тестировать свою страницу, просто смогу войти в систему через оболочку, так как тогда мне нужно сделать это с помощью wkhtml. - person Dominique Guardiola; 07.02.2011
comment
На самом деле саржа — это не просто микроязык. У всех команд twill есть свои аналоги Python, что означает, что вы можете легко создать скрипт, который переходит на страницу, входит в систему и затем выводит HTML. Затем вы можете передать его в wkhtmltopdf. - person e-satis; 07.02.2011
comment
(Après quelques essais très concluants) Merci de m'avoir fait découvrir twill, ça se loggue très bien, a contrario de curl, je renonce à savoir pourquoi :) Le pipe vers wkhtmltopdf aussi ! - person Dominique Guardiola; 09.02.2011
comment
Здорово. Кстати, здесь французский никто не поймет. - person e-satis; 09.02.2011