3

我的 1.2.3 django 站点使用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 有关...)

4

1 回答 1

3

要禁用 CSRF,只需删除 settings.py 文件中的 CSRFMiddleWare 即可。但请记住在测试后将其放回原处。

您可能希望将来使用twill之类的东西来更轻松地测试您的页面,因为它会为您处理表单提交、链接解析、cookie 和重定向等内容。

于 2011-02-07T13:29:55.890 回答