#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 %}» перед каждым тегом ввода, когда они не были объединены или разделены какими-либо другими тегами.