2011-02-07 2 views
3

Мой 1.2.3 Джанго сайт использует contrib.auth и моя цель состоит в том, чтобы использовать wkhtmltopdf командной строки для печати входа только страницу, wkhtml can handle this situation.Войти с оболочки в месте Джанго

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

Этот новый взгляд работает, как ожидалось. Тогда, как уже упоминалось here:

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 или сессионные куки на его point ...)

ответ

3

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

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

+0

Отключение CSRF не является вариантом. curl - это просто более простой способ проверить успех входа в систему, я тоже, конечно, мог бы использовать twill. –

+0

Я предложил его (как временную меру) только потому, что я прочитал «Я пытался отключить CSRF со вторым регистрационным представлением» в вашем вопросе. Очевидно, вы не хотите отключать это на prod. Twill - это, безусловно, способ, так как он ДЕЙСТВИТЕЛЬНО прост в использовании и может быть установлен с помощью easy_install в одной команде. –

+0

спасибо за вашу помощь, но я не хочу тестировать свою страницу, просто смогу войти в систему через оболочку, так как мне нужно сделать это с помощью wkhtml. –

Смежные вопросы