簡體   English   中英

如何在Django 1.11中導入和使用CSRF令牌?

[英]How import and use csrf token in django 1.11?

豌豆幫助在Django 1.11中使用CSRF令牌

在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)

但是控制台顯示跟隨錯誤消息:

django.views.decorators.csrf中的文件“ /home/kalinin/django/login/views.py”,第3行,導入csrf ImportError:無法導入名稱“ 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快捷方式時,無需擔心視圖中的csrf令牌,您可以刪除此行。

args.update(csrf(request))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM