python - 如何在 Django 1.11 中导入和使用 csrf token ?

标签 python django

Pease 帮助在 django 1.11 中使用 csrf token

在 view.py 中我使用以下代码:

from django.shortcuts import render_to_response, redirect
from django.contrib import auth
from django.views.decorators.csrf import csrf

def login(request):
    args = {}
    args.update(csrf(request))
    if request.POST:
            username = request.POST.get('username', '')
            password = request.POST.get('password', '')
            user = auth.authenticate(username=username, password=password)
            if user is not None:
                    auth.login(request, user)
                    return redirect('/')
            else:
                    args['login_error'] = 'Пользователь не найден';
                    return render_to_response('login.html', args)
    else:
            return render_to_response('login.html', args)

但是控制台显示如下错误信息:

File "/home/kalinin/django/login/views.py", line 3, in from django.views.decorators.csrf import csrf ImportError: cannot import name 'csrf'

在 django 1.8 中我使用类似的代码,但是导入 csrf:

from django.core.context_processors import csrf

应用程序运行正常

请帮助运行我的 django 1.11 应用程序

最佳答案

在 Django 1.8 中,模板上下文处理器被移动到 django.template.context_processors.csrf,因此导入将是:

from django.template.context_processors import csrf

但是,您根本不需要导入它。停止使用 render_to_response,它已经过时了。请改用 render 快捷方式。

from django.shortcuts import render

return render(request, 'login.html', args)

当您使用render 快捷方式时,您无需担心 View 中的csrf token ,您可以删除这一行。

args.update(csrf(request))

关于python - 如何在 Django 1.11 中导入和使用 csrf token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45054699/

相关文章:

python - 如何创建文本文件中除具有重复字母的单词之外的所有单词的列表

Python Django - 在 View 之间保持用户登录 session

python - Numpy:多维索引。逐行无循环

python - 在 python 中没有得到值前导零的精确结果。请告诉我那里发生了什么

python - 根据项目值之一对项目进行排序的最佳方法是什么

python - 如何从 Django Web 应用程序运行系统命令?

python - 无法使用 Django 身份验证

python - 如何在用户资源中插入 user_permissions 字段?

django - 在django中将除表单数据之外的数据添加到数据库中

python - 如何用Python访问网络?