简体   繁体   中英

CSRF verification failed. Request aborted. I think its more of a token mismatch because implementation of {% csrf_token %} is there

Reason given for failure:
CSRF token missing or incorrect.

I have provided the '{% csrf_token %}' as concerned in this html page but I can't sort the error myself, it's probably out of my understanding about 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})
....

错误消失了,我认为问题出在“ enctype = text / plain-text”,我刚刚删除了它。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM