Django集成django-simple-captcha实现防机器人验证码功能

半杯拿铁
半杯拿铁
发布时间:2026-10-13| 6人浏览过
原创

本文详解如何在Django项目中集成django-simple-captcha模块以增强表单安全性。内容涵盖模块安装、INSTALLED_APPS配置、数据库迁移、URL路由设置及CaptchaField在ModelForm中的具体应用,帮助开发者快速实现防机器人提交功能。

Django集成防机器人验证码方案

为Django项目添加防机器人验证码功能,推荐使用 django-simple-captcha 模块。该模块的官方文档及源码托管于 GitHub,地址为:https://github.com/mbi/django-simple-captcha。

首先,通过命令行工具执行一键安装命令:

模块安装与配置


pip install django-simple-captcha

安装完成后,需修改 Django 项目的 settings.py 配置文件。在 INSTALLED_APPS 列表中注册 'captcha' 应用,确保 Django 能识别该模块。


INSTALLED_APPS = (
  # ...
  'captcha',
  # ... 
)

由于 django-simple-captcha 需要在数据库中创建专用的数据表以存储验证码信息,因此必须执行数据库迁移操作。请在项目根目录下运行以下命令:

数据库迁移


python manage.py migrate

接下来,配置 URL 路由。在 urls.py 文件中引入 captcha 模块的 URL 配置,确保前端页面可以访问验证码生成接口。具体配置如下:

URL路由配置


from django.urls import path, re_path, include
urlpatterns = [
  #...
  url(r'^captcha/', include('captcha.urls'),
  # ...
]

在定义表单类时,需导入 CaptchaField 并将其作为字段添加到窗体类中。以下示例展示了如何在 PostForm 中集成验证码字段,同时保留其他原有字段的标签定义:

表单类集成


from captcha.fields import CaptchaField
class PostForm(forms.ModelForm):
  captcha = CaptchaField() #CaptchaField 字段
  class Meta:
    model = models.Post
    fields = ['mood', 'nickname', 'message', 'del_pass']

  def __init__(self, *args, **kwargs):
    super(PostForm, self).__init__(*args, **kwargs)
    self.fields['mood'].label = '现在的心情'
    self.fields['nickname'].label = '您的昵称'
    self.fields['message'].label = '心情留言'
    self.fields['del_pass'].label = '设置密码'
    self.fields['captcha'].label = '请输入验证码'

完成上述配置后运行项目,前端页面将显示验证码输入框,效果如下:

以上内容即为在Django中配置防机器人验证码的完整流程,希望对相关开发者有所帮助。

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

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 算法库。