CSRF验证失败。请求中止 [英] CSRF verification failed. Request aborted
问题描述
index.html:
{%if top_list%}
< ul>
< b>< pre>名称总计步骤< / pre>< / b>
{%for top in top_list%}
< pre> {{t.name}} {{t.total_steps}}< / pre>
{%endfor%}
< / ul>
{%else%}
< p>无可用数据< / p>
{%endif%}
< br>
< form action =/ steps_count /method =post>
{%csrf_token%}
名称:< input type =textname =Name/>< br />
步骤:< input type =textname =Steps/>< br />
< input type =submitvalue =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:
#在这里创建您的意见。
pre>
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从django.shortcuts导入RequestContext
import get_object_or_404,render_to_response
def index(request):
如果request.method =='POST':
#form = Top_List_Form(request.POST)
打印做某事
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)+'\\\
')for t in top_list])
return HttpResponse(t.render(c))
但是,当我点击提交按钮时,我会收到403错误:
CSRF验证失败。请求中止。
我已经包括
{%csrf_token%}
在index.html中。然而,如果它是一个RequestContext问题,我真的不知道在哪里和如何使用它。我希望在同一页面上发生所有事情(index.html)。解决方案使用
render
快捷方式,自动添加RequestContext
。从django.http导入HttpResponse
从django.shortcuts导入get_object_or_404,从steps_count.models渲染
导入Top_List
从steps_count.forms import Top_List_Form
def索引(请求):
如果request.method =='POST':
#form = Top_List_Form(request.POST)
返回HttpResponse(做某事)#方法必须返回HttpResponse
else:
top_list = Top_List.objects.all()。order_by 'total_steps')。reverse()
#output =''.join([(t.name +'\t'+ str(t.total_steps)+'\\\
')for t in top_list])
返回呈现(request,'steps_count / index.html',{'top_list':top_list})
I try to build a very simple website where one can add data into sqlite3 database. I have a POST form with two text input.
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))
However, when I click the "submit" button, I get the 403 error:
CSRF verification failed. Request aborted.
I have included
{% csrf_token %}
in index.html. However, if it is a RequestContext problem, I really have NO idea on where and how to use it. I want everything to happen on the same page (index.html).解决方案Use the
render
shortcut which addsRequestContext
automatically.from django.http import HttpResponse from django.shortcuts import get_object_or_404, render from steps_count.models import Top_List from steps_count.forms import Top_List_Form def index(request): if request.method == 'POST': #form = Top_List_Form(request.POST) return HttpResponse("Do something") # methods must return HttpResponse else: top_list = Top_List.objects.all().order_by('total_steps').reverse() #output = ''.join([(t.name+'\t'+str(t.total_steps)+'\n') for t in top_list]) return render(request,'steps_count/index.html',{'top_list': top_list})
这篇关于CSRF验证失败。请求中止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!