基于函数的视图在 Django 1.11.5 中的 CSRF 验证失败

function based view failed on CSRF verification in Django 1.11.5

我正在通过创建博客站点来学习 Django。但是当尝试使用基于函数的视图创建 post 时,CSRF 验证失败。

使用 csrf_exempt 装饰器,我可以毫无错误地创建 post。但是为了安全需要使用CSRF保护,请问有人可以帮忙解决吗?

Django=1.11.5
Python=3.6.8

views.py

def post_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.author = request.user
            new_post.save()
            return HttpResponseRedirect('/')
    else:
        form = PostForm()
    return render_to_response('create.html',{ 'form': form })

create.html

<h2>Create your post here.</h2>
<form method="POST" enctype="multipart/form-data">
     {% csrf_token %}
     {{ form.as_p }}
     <input type="submit" value="CREATE">
</form>

settings.pyMIDDLEWARE 部分添加:

'django.middleware.csrf.CsrfViewMiddleware',

您不应该使用 render_to_response。使用 render 运行上下文处理器,例如插入 csrf 令牌的处理器。

return render (request, 'create.html',{ 'form': form })

通过将 render_to_response 替换为渲染清除此 CSRF 验证失败。但不知道它是如何工作的?有人解释一下这是怎么回事吗?