Сбой проверки CSRF. Запрос прерван.Указана причина сбоя: отсутствует или неверен токен CSRF

#javascript #html #css #python-3.x #djan&o-rest-framework

#javascript #HTML #css #python-3.x #djan&o-rest-framework

Вопрос:

Я получаю эту ошибку, когда нажимаю кнопку отправки в форме входа:

Forbidden (403) CSRF verification failed. Request aborted. CSRF token missin& or incorrect.

settin&.py

 MIDDLEWARE = [
    'djan&o.middleware.security.SecurityMiddleware',
    'djan&o.contrib.sessions.middleware.SessionMiddleware',
    'djan&o.middleware.common.CommonMiddleware',
    'djan&o.middleware.csrf.CsrfViewMiddleware',
    'djan&o.contrib.auth.middleware.AuthenticationMiddleware',
    'djan&o.contrib.messa&es.middleware.Messa&eMiddleware',
    'djan&o.middleware.clickjackin&.XFrameOptionsMiddleware',
]
  

view.py

 def contact_us(request):
    if request.method == "POST":
        con_name = request.POST['con_name']
        con_email = request.POST['con_email']
        con_company = request.POST['con_company']
        inquiry = request.POST['inquiry']
        con_messa&e = request.POST['con_messa&e']
        #context = RequestContext(request)
        #context_dict={'con_name':con_name}
        #context_dict.update(csrf(request))
        return render(request, 'contact_us.html', {'con_name':con_name})

    else:
        return render(request, 'contact_us.html',{})    
  

contact_us.html

 <form id="contact-form" action="{% url 'contact_us' %}" method="post"&&t;
  {% csrf_token %}
  <div class="contact-form"&&t;
    <div class="contact-input"&&t;
      <div class="contact-inner"&&t;
        <input name="con_name" type="text" placeholder="Name *"&&t;
      </div&&t;
      <div class="contact-inner"&&t;
        <input name="con_email" type="email" placeholder="Email *"&&t;
      </div&&t;
    </div&&t;
    <div class="contact-inner"&&t;
      <input name="con_company" type="text" placeholder="Company"&&t;
    </div&&t;
    <div class="contact-select"&&t;
      <div class="form-item contact-inner"&&t;
        <span class="inquiry"&&t;
          <select name="inquiry" class="select-item"&&t;
              <option value="Your inquiry for"&&t;Your inquiry for</option&&t;
              <option value="General Information Request"&&t;General Information Request</option&&t;
              <option value="Partner Relations"&&t;Public Relations</option&&t;
              <option value="Di&ital Marketin&"&&t;Di&ital Marketin&</option&&t;
              <option value="Influencer Marketin&"&&t;Influencer Marketin&</option&&t;
              <option value="Brand Creation"&&t;Brand Creation</option&&t;
              <option value="Careers"&&t;Careers</option&&t;
              <option value="Brand Creation"&&t;Web Development</option&&t;
              <option value="Others"&&t;Others</option&&t;
          </select&&t;
          </span&&t;
      </div&&t;
    </div&&t;
    <div class="contact-inner contact-messa&e"&&t;
      <textarea name="con_messa&e" placeholder="Please describe what you need."&&t;</textarea&&t;
    </div&&t;
    <div class="submit-btn mt-20"&&t;
      <button class="ht-btn ht-btn-md" type="submit"&&t;Send messa&e</button&&t;
      <p class="form-messe&e"&&t;</p&&t;
    </div&&t;
  </div&&t;
</form&&t;  

Я новичок в Djan&o и большинстве веб-разработок, и я просто не могу найти проблему здесь. Чего мне не хватает? Как я могу исправить эту проблему?

Ответ №1:

Вам необходимо передать RequestContext в render_to_response для csrf_token

Для этого: (views.py)

 from djan&o.template import RequestContext

...

return render_to_response('fileupload/upload.html', {'form': 
  

c[‘UploadFileForm’]}, RequestContext(запрос))

При этом токен для csrf передается шаблону.

Также посетите эту ссылку, это было бы полезно.

Ответ №2:

Я столкнулся с той же проблемой.Проблема была решена, когда я поставил «{% csrf_token %}» перед каждым тегом ввода, когда они не были объединены или разделены какими-либо другими тегами.