升级到Django 1.11后,csrftoken标记无法正常工作

时间:2017-04-28 18:58:00

标签: python django django-csrf

我继承了一个Django应用程序,我最初使用的是Django 1.9。最近我将它迁移到Django 1.11和Python 3.4(从2.7)。从那时起,我的一些管理员视图已经开始失败,出现403 Forbidden错误,CSRF验证失败。我查看了the documentation,并检查了以下内容:

  1. 我仍在使用MIDDLEWARE_CLASSES,但django.middleware.csrf.CsrfViewMiddleware已包含在我的配置中(仅次于SessionMiddlewareCommonMiddleware)。
  2. 使用的模板包含{% csrf_token %}内容。
  3. 该视图使用render_to_response(),并将RequestContext(request)作为第三个参数传递给它。
  4. (据我所知,在Django / Python升级期间或之后,这些都没有改变。)

    虽然我有很多Python网络编程经验,但我对Django并不熟悉。我缺少什么/如何进一步调试?

1 个答案:

答案 0 :(得分:2)

context_instance参数为deprecated in 1.8,随后在1.10中删除。如果您在上下文中需要请求,请改用render()并将请求作为第一个参数传递。您应该在第三个参数中将上下文作为普通字典传递。