表单发布后缺少csrf令牌值

时间:2015-12-18 16:06:19

标签: django

我有自己的表格发布。 表格帖子第一次完美运作。但是表单在表单后加载,表单加载时缺少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="">

任何人都可以说出可能存在的问题吗?

2 个答案:

答案 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."