2017-02-01 4 views
1

장고에서 CSRF 오류가 발생하고 기사가 작동하지 않습니다. 그것은 내가 기억하는 것처럼 게시물에 사용되며 양식에 포함되어 있지만 양식 태그에는 포함되어 있지 않습니다.CSRF 확인에 실패했습니다. 요청이 중단되었습니다. Django

settings.py

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

login.html

{% extends 'base.html' %} 
{% block body_block %} 

<h1>Login</h1> 

<form id="login_form" method="post" action="{% url 'accounts:login' %}"> 
    {% csrf_token %} 
    <div class="input-group input-group-md"> 
     <span class="input-group-addon">Username</span> 
     <input type="text"class="form-control" placeholder="Username" aria-describedby="basic-addon2" name="username" value="" size="50" /> 
    </div> 
    <br> 
    <div class="input-group input-group-md"> 
     <span class="input-group-addon">Password</span> 
     <input class="form-control" placeholder="Password" aria-describedby="basic-addon2" type="password" name="password" value="" size="50" /> 
    </div> 
    <br> 
    <div class="input-group input-group-md"> 
     <input class="btn btn-default navbar-btn" type="submit" value="Submit" /> 
    </div> 
</form> 
<br /><br /> 
<a style="font-size:22px;" href="/accounts/register/">Need to make a new account?</a> 


{% endblock %} 

{% block buttons %} 
{% endblock %} 

views.py :

def user_login(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     form = LoginForm(request.POST) 
     username = request.POST['username'] 
     password = request.POST['password'] 

     user = authenticate(username=username, password=password) 

     if user: 
      if user.is_active: 
       login(request, user) 
       return redirect('bookmarks:silo') 
      else: 
       return HttpResponse("Your Sitename account is disabled.") 

     else: 
      return render_to_response('accounts/login.html', locals(), context) 
    else: 

     template_name = 'accounts/login.html' 
     return render_to_response('accounts/login.html', locals(), context) 

왜 CSRF 토큰 작동하지 않습니다? 고맙습니다.

+1

사용중인 django의 버전은 무엇입니까 ?? –

답변

3

는이 같은 매개 변수 context_instanceRequestContext를 사용해야합니다 :

def user_login(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     form = LoginForm(request.POST) 
     username = request.POST['username'] 
     password = request.POST['password'] 

     user = authenticate(username=username, password=password) 

     if user: 
      if user.is_active: 
       login(request, user) 
       return redirect('bookmarks:silo') 
      else: 
       return HttpResponse("Your Sitename account is disabled.") 

     else: 
      return render_to_response('accounts/login.html', context_instance = context, locals(),) 
    else: 

     template_name = 'accounts/login.html' 
     return render_to_response('accounts/login.html', context_instance = context, locals(), context) 

한가지 더, context_instance이후 장고 1.8를 사용되지 않습니다. 다음을 사용할 수 있습니다 :

return render(request,'accounts/login.html', locals()) 
+0

예, 이것은 오래된 프로젝트입니다. 감사합니다 prakhar – codyc4321