我有自己的表格发布。 表格帖子第一次完美运作。但是表单在表单后加载,表单加载时缺少csrf值。
这是代码
def index(request):
errormessage = None
if request.method == 'POST':
form = TestModelForm(request.POST)
if form.is_valid():
test_model = form.save(commit= False)
#add some fields
test_model.save()
#some processing
else:
errormessage = "Please fix the errors and try again."
else:
form = TestModelForm()
return render(request, 'index.html', {'errors': errormessage, 'form' : form})
使用以下语法
插入CSRF令牌{% csrf_token %}
首页加载时这是HTML
<input type="hidden" name="csrfmiddlewaretoken" value="mjezd6QwxpznO1WMDavAMRDA3e2pIhu7">
这是发布后的页面加载HTML
<input type="hidden" name="csrfmiddlewaretoken" value="">
任何人都可以说出可能存在的问题吗?
答案 0 :(得分:0)
尝试将return render(request, 'index.html', {'errors': errormessage})
更改为return render(request, 'index.html', {'errors': errormessage, 'form': form})
并将{% csrf_token %}
添加到模板文件中。这应该可以解决问题。有关详细信息,请参阅the docs here
答案 1 :(得分:0)
你应该试试这个:
if form.is_valid():
test_model = form.save(commit= False)
#add some fields
test_model.save()
#some processing
return render(request, 'index.html', {'errors': errormessage, 'form' : form})
else:
errormessage = "Please fix the errors and try again."