3
votes

ERROR:

Reason given for failure: CSRF cookie not set.

In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure: Your browser is accepting cookies. The view function uses RequestContext for the template, instead of Context. In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL. If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data. You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed. You can customize this page using the CSRF_FAILURE_VIEW setting.

Did everything that I could find, nothing helped, must be something really foolish((

My template

<form method="POST">{% csrf_token %}
     {% for field in  form %}
       <div class="control-group">
            {{ field }}
       </div>
     {% endfor %}
     <input type="Submit" id="fsubmit" class="btn btn-primary btn-large btn-block" value='Register'/>
</form>

my Views.py

from django.shortcuts import render_to_response
from django.template import RequestContext

def register_user(request):
    context = {}
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            pass
    else:
        form = RegisterForm(auto_id=False)
    context['form'] = form
    return render_to_response('templates/register.htm',context, context_instance=RequestContext(request))

Settings

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',

)

1

1 Answers

0
votes

Use csrf_exempt to avoid csrf token.

In view

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def register_user(request):
    context = {}
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            pass
    else:
        form = RegisterForm(auto_id=False)
    context['form'] = form
    return render_to_response('templates/register.htm',context, context_instance=RequestContext(request))