Weryfikacja CSRF nie powiodła się. Żądanie przerwane
Staram się zbudować bardzo prostą stronę internetową, na której można dodawać dane do bazy danych sqlite3. Mam formularz POST z dwoma wejściami tekstowymi.
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>
Jednak po kliknięciu przycisku „Prześlij” pojawia się błąd 403:
<code>CSRF verification failed. Request aborted. </code>
Włączyłem{% csrf_token %}
w index.html. Jeśli jednak jest to problem RequestContext, naprawdę nie mam pojęcia, gdzie i jak go używać. Chcę, żeby wszystko działo się na tej samej stronie (index.html).