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.