Django 中处理 CSRF 保护的两类常见方案

陆景行
陆景行
发布时间:2026-10-13| 6人浏览过
原创

本文介绍 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 处理方法的实例分享完毕,希望能为读者提供有效的参考,同时也欢迎继续支持本站获取更多技术内容。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。