Django 中处理 CSRF 保护的两类常见方案
本文介绍 Django 框架中处理 CSRF 验证的两种典型方式。第一种通过视图装饰器 @csrf_exempt 直接禁用特定接口的 CSRF 检查;第二种则在 HTML 表单中嵌入 {% csrf_token %} 标签,并在视图中使用 render 函数渲染页面,从而在保持安全机制的前提下允许表单正常提交。
第一种实现路径是在对应的视图函数定义上方添加特定的装饰器语句。
@csrf_exempt
具体示例如下所示:
@csrf_exempt
def login(request):
return render_to_response('app/login.html', locals())
上述做法的核心作用是直接移除对该视图的 CSRF 防御机制检查。
第二种实现路径提供了具体代码示例,主要涉及在 HTML 的 form 表单内部添加 {% csrf_token %} 标签,同时在视图函数中调用 render(request, 'app/breakdown_view.html', locals()) 进行页面渲染。
相关代码示例如下:
<div class="container">
<form class="form-signin" method="POST">
{% csrf_token %}
<h2 class="form-signin-heading">Please login in</h2>
<label for="inputEmail" class="sr-only">Email address</label>
<input name="loginEmail" type="email" id="inputEmail" class="form-control" placeholder="Email address" value = "{{myLogin.loginEmail}}" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input name="loginPassword" type="password" id="inputPassword" class="form-control" placeholder="Password" required>
<!-- <div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div> -->
<button class="btn btn-lg btn-primary btn-block" type="submit">Login in</button>
</form>
</div> <!-- /container -->
def login(request): return render(request, 'app/login.html', locals())
以上关于 Django 中设置 form 的两种 CSRF 处理方法的实例分享完毕,希望能为读者提供有效的参考,同时也欢迎继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













