Проверка CSRF не удалась. Запрос отменен. Я думаю, что это скорее несоответствие токена, потому что есть реализация {% csrf_token %}

Причина, приведенная для отказа:
Маркер CSRF отсутствует или неверен.

Я предоставил "{% csrf_token %}" в отношении этой html-страницы, но сам не могу отсортировать ошибку, возможно, она не в моем понимании django.

eventcreationform.html

<!DOCTYPE html>
<html lang="en">

<head>
  {% csrf_token %}
</head>

<body>
  <div class="alert-success">
    {% if messages %} {{ message }} {% endif %}
  </div>
  <div class='container'>
    <h1>
      {% if user.is_authenticated %}
        {{ user.username }} ! 
      {% endif %} Please fill this form:
    </h1>
    <h3>
      <form method='POST' enctype="text/plain"> {% csrf_token %} {{ form }}
        <button type='submit' class='btn btn-default'>Submit</button>
      </form>
    </h3>
  </div>
</body>

</html>

forms.py

...

class EventForm(forms.ModelForm):
    event_name = forms.CharField(label='Name')
    event_date_time = forms.DateTimeField(label='Date and Time', 
    widget=forms.DateTimeInput)
    address = forms.CharField(label='Address')

class Meta:
    model = CreatedEvent
    fields = ('event_name', 'event_date_time', 'address')

...

urls.py

from django.conf.urls import url
from django.views.generic import TemplateView
from rest_framework.urlpatterns import format_suffix_patterns
from api import views
from django.conf import settings
from django.conf.urls.static import static


app_name = 'api'

urlpatterns = [
    ....
    url(r'^register/', views.Register.as_view(), name='register'),
    url(r'^eventform/', views.EventCreationForm.as_view(), name='eventform'),
    ....
]

urlpatterns = format_suffix_patterns(urlpatterns)
urlpatterns += static(settings.STATIC_URL,             
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_ROOT, document_root=settings.MEDIA_ROOT)

views.py

....

class EventCreationForm(View):
    template_eventcreationform = 'eventcreationform.html'
    form_class = EventForm

    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_eventcreationform, {'form':                     
form})

    def post(self, request):
        # data is here
        form = self.form_class(request.POST)
        if form.is_valid():
            event = form.save(commit=False)
            user = request.user.objects
            form.user = user.email
            event_name = form.cleaned_data.get('event_name')
            event_date_time = form.cleaned_data.get('event_date_time')
            event_address = form.cleaned_data.get('address')
            event.save()
            message = 'Event added'
            return render(request, 'base.html', {'message': message})
        else:
            message = 'Invalid form data, try again'
            form = self.form_class(None)
            return render(request, self.template_eventcreationform, 
{'message': message, 'form': form})
....

1 ответ

Ошибка исчезла, я думаю, что проблема была с 'enctype=text/plain-text', и я просто удалил ее.

Другие вопросы по тегам