#python #html #django #django-forms
#python #HTML #django #django-forms
Вопрос:
У меня есть созданная мной HTML-форма, и я пытаюсь заставить Django обработать. Вот мой main.html (сокращенный):
<form action="/polls/thanks/" method="post" name = 'tag_name'>
{% csrf_token %}
<div class="w-3/4 py-10 px-8">
<table class="table-auto">
<thead>
<tr>
<th class="py-10 h-4">
<div class="mr-64">
<input type="checkbox" class="form-checkbox h-8 w-8">
<label class="ml-4">test</label>
</div>
</th>
</tr>
и вот views.py:
from django.http import HttpResponseRedirect
from django.shortcuts import render
def get_name(request):
if request.method == 'POST':
form = request.POST.get('tag_name')
print(form)
if form.is_valid():
return HttpResponseRedirect('/polls/thanks/')
return render(request, 'main.html', {'form': 'mainform'})
def thanks(request):
form = request.POST.get('tag_name')
print(form)
if form.is_valid():
print(form.cleaned_data)
return render(request, 'thanks.html')
Вот /mysite/urls.py:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
и вот /mysite/polls/urls.py
from . import views
urlpatterns = [
path('', views.get_name, name='index'),
path('thanks/', views.thanks, name='thanks/'),
]
тем не менее, он по-прежнему возвращает недопустимую проверку CSRF, если я попытаюсь отправить форму
Кто-нибудь знает, как это исправить?
Спасибо
Комментарии:
1. Можете ли вы поделиться своим
urls.py
, которое сопоставлено с этим?2. Веб-страница загружается, поэтому я сомневаюсь, что в этом проблема, просто когда я отправляю вместо этого, это выдает мне ошибку CSRF для формы. Я все равно прикреплю его
3.
django.middleware.csrf.CsrfViewMiddleware
Включено ли оно в ваше промежуточное ПРОГРАММНОЕ обеспечение? Можете ли вы поделиться своимsettings.MIDDLEWARE
4.
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', ]
5. можете ли вы проверить на вкладке network консоли браузера, чтобы убедиться, что файл cookie CSRF установлен правильно? Если вы устанавливаете безопасный файл cookie, а ваше приложение работает по протоколу http, серверная часть не получит файл cookie CSRF