Tôi cố gắng xây dựng một trang web rất đơn giản, nơi người ta có thể thêm dữ liệu vào cơ sở dữ liệu sqlite3. Tôi có một biểu mẫu POST với hai kiểu nhập văn bản.Xác minh CSRF không thành công. Yêu cầu hủy bỏ
index.html:
{% 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>
forms.py:
from django import forms
from steps_count.models import Top_List
class Top_List_Form(forms.ModelForm):
class Meta:
model=Top_List
views.py:
# 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))
Tuy nhiên, khi tôi nhấp vào "submit" nút, tôi nhận được lỗi 403:
CSRF verification failed. Request aborted.
Tôi đã bao gồm {% csrf_token %}
trong index.html. Tuy nhiên, nếu nó là một vấn đề RequestContext, tôi thực sự không có ý tưởng về nơi và làm thế nào để sử dụng nó. Tôi muốn mọi thứ xảy ra trên cùng một trang (index.html).
Cảm ơn bạn rất nhiều, nó hoạt động! – Bebe