CSRF-Überprüfung fehlgeschlagen. Anfrage abgebrochen
Ich versuche, eine sehr einfache Website zu erstellen, auf der man Daten in die sqlite3-Datenbank einfügen kann. Ich habe ein POST-Formular mit zwei Texteingaben.
index.html:
<code>{% if top_list %} <ul> <b><pre>Name Total steps</pre></b> {% for t in top_list %} <pre>{{t.name}} {{t.total_steps}}</pre> {% endfor %} </ul> {% else %} <p>No data available.</p> {% endif %} <br> <form action="/steps_count/" method="post"> {% csrf_token %} Name: <input type="text" name="Name" /><br /> Steps: <input type="text" name="Steps" /><br /> <input type="submit" value="Add" /> </form> </code>
forms.py:
<code>from django import forms from steps_count.models import Top_List class Top_List_Form(forms.ModelForm): class Meta: model=Top_List </code>
views.py:
<code># Create your views here. from django.template import Context, loader from django.http import HttpResponse from steps_count.models import Top_List from steps_count.forms import Top_List_Form from django.template import RequestContext from django.shortcuts import get_object_or_404, render_to_response def index(request): if request.method == 'POST': #form = Top_List_Form(request.POST) print "Do something" else: top_list = Top_List.objects.all().order_by('total_steps').reverse() t = loader.get_template('steps_count/index.html') c = Context({'top_list': top_list,}) #output = ''.join([(t.name+'\t'+str(t.total_steps)+'\n') for t in top_list]) return HttpResponse(t.render(c)) </code>
Wenn ich jedoch auf die Schaltfläche "Senden" klicke, wird der Fehler 403 angezeigt:
<code>CSRF verification failed. Request aborted. </code>
Ich habe aufgenommen{% csrf_token %}
in index.html. Wenn es sich jedoch um ein RequestContext-Problem handelt, habe ich wirklich keine Ahnung, wo und wie ich es verwenden soll. Ich möchte, dass alles auf derselben Seite geschieht (index.html).