Django 表单向导和 recaptcha

2024-03-23

我使用以下命令进行了验证码集成Django 片段 http://www.djangosnippets.org/snippets/1653/

settings.py

    RECAPTCHA_PUBLIC_KEY = '<your public key>'
    RECAPTCHA_PRIVATE_KEY = '<your private key>'


#widgets.py

    from django import forms
    from django.utils.safestring import mark_safe
    from django.conf import settings
    from recaptcha import captcha

    class ReCaptcha(forms.widgets.Widget):
    recaptcha_challenge_name = 'recaptcha_challenge_field'
    recaptcha_response_name = 'recaptcha_response_field'

    def render(self, name, value, attrs=None):
        return mark_safe(u'%s' % captcha.displayhtml(settings.RECAPTCHA_PUBLIC_KEY))

    def value_from_datadict(self, data, files, name):
        return [data.get(self.recaptcha_challenge_name, None), 
        data.get(self.recaptcha_response_name, None)]


#fields.py

    from django.conf import settings
    from django import forms
    from django.utils.encoding import smart_unicode
    from django.utils.translation import ugettext_lazy as _

    from marcofucci_utils.widgets import ReCaptcha
    from recaptcha import captcha

    class ReCaptchaField(forms.CharField):
    default_error_messages = {
        'captcha_invalid': _(u'Invalid captcha')
    }

    def __init__(self, *args, **kwargs):
        self.widget = ReCaptcha
        self.required = True
        super(ReCaptchaField, self).__init__(*args, **kwargs)

    def clean(self, values):
        super(ReCaptchaField, self).clean(values[1])
        recaptcha_challenge_value = smart_unicode(values[0])
        recaptcha_response_value = smart_unicode(values[1])
        check_captcha = captcha.submit(recaptcha_challenge_value, 
        recaptcha_response_value, settings.RECAPTCHA_PRIVATE_KEY, {})
        if not check_captcha.is_valid:
        raise forms.util.ValidationError(self.error_messages['captcha_invalid'])
        return values[0]


#forms.py

    class RegistrationForm(forms.Form):
    ...
    recaptcha = marcofucci_fields.ReCaptchaField()
    ...

但是我在 django 表单向导中定义了表单,并且它在字段上调用 ​​clean 方法两次,即使验证码包含在最后一个表单中。

如下:

    from registration.forms import RegistrationWizard,RegistrationForm,ProfileForm

    url(r'^register/$',
        RegistrationWizard([RegistrationForm,ProfileForm]),
        name='register_wizard'),

我该如何规避这种情况。为什么需要在最后一个表单上调用 clean 两次?


如果表单已绑定,则在渲染时它将始终调用 clean (即使您不调用 form.is_valid )。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 表单向导和 recaptcha 的相关文章

  • “unicode”对象没有属性“_meta”

    我正在尝试创建一个视图 用户在其中从下拉菜单中选择一个选项 提交它 然后返回一些数据 具体来说 他们将从数据库中的模型中进行选择 并返回该类的所有实例 我使用 django tables2 输出数据 以便可以排序 但这是我的症结所在 Vie
  • 将 *.appspot.com 重定向到自定义域:Google 应用引擎 (Django)

    我直接将我的一些示例代码放在这里以获得更好的了解 url py r robots txt myapp views robots r myapp views home views py def home request my code ret
  • Django 迁移 - 禁用系统检查

    我从 Django 1 7 升级到 Django 1 9 我有多次迁移 自从升级以来 我无法再创建新的数据库 问题是 django manage py migrate 运行检查 检查导入应用程序 URL 这些最终导入查找数据库的代码 我可以
  • Django 星级评定系统和 AJAX

    我正在尝试在 Django 网站上实现星级评级系统 在我的模型中存储评级是排序的 就像在页面上显示分数一样 但我希望用户能够对页面进行评分 基本上从 1 到 5 而无需刷新或更改页面 我发现了以下内容 并且喜欢这里明星的风格 http jv
  • mvc 登录尝试失败后生成验证码

    所以我能够让我的验证码工作正常工作 但我的问题是 我想让它只在 3 次尝试后出现 我的一个选择是将用户重定向到一个已经有验证码的视图 重复登录 但带有验证码 然后让他通过该页面登录 还有其他选择吗 我觉得部分视图会导致页面发布出现问题 您认
  • Django + WSGI:刷新问题?

    我正在开发一个 Django 网站 我在实时服务器上进行所有更改 只是因为这样更容易 问题是 它似乎时不时地喜欢缓存我正在处理的 py 文件之一 有时 如果我频繁点击刷新 它会在页面的旧版本和新版本之间来回切换 我的设置或多或少类似于 Dj
  • Django的注释框架和CSRF

    据我了解 Django的评论框架 https docs djangoproject com en 1 4 ref contrib comments 专为匿名公众评论而设计 就像您通常在博客或文章下面看到的那样 换句话说 任何人都可以发表评论
  • 带有 ManyToMany 和直通表的 Graphene-django

    我的应用程序有多个多对多关系具有贯穿模型像这样 class Person models Model name models CharField class Group models Model name models CharField m
  • HTML - 使用 JS 根据值更改文本颜色

    我正在使用 Django 创建一个以 HTML 形式显示的表格 我想当数字为负数时将数字的颜色更改为红色 当数字为正数时将数字的颜色更改为绿色 我知道我需要使用 JS 来实现这一点 但我无法让它工作 任何帮助将不胜感激 这是我的 Djang
  • Django 管理员 - 登录

    我正在建造一个Django Web App 与 Django Suit 用于管理界面 已经让 Python 2 7 Django 1 10 和 MySQL 和谐通信并启动了一个项目 python m django admin startpr
  • 如何将我自己的文件添加到 django 'static' 文件夹

    我读了django静态文件文档 https docs djangoproject com en 1 7 howto static files 并使我的 django 静态文件设置如下 设置 py PROJECT PATH os path r
  • Django/Python:电子邮件回复已更新到站点[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以从另一个视图中调用一个视图吗?

    我的一个视图需要添加一个项目以及其他功能 但我已经有另一个专门添加项目的视图 我可以做类似的事情吗 def specific add item view request item Item objects create foo reques
  • 如何为 bcrypt.hashpw 设置盐?

    salt yhnqazolr123098765 password bcrypt hashpw password salt repeatpassword bcrypt hashpw repeatpassword salt 我在第二行遇到错误
  • 嵌套字段序列化器 - 数据丢失

    与此主题相关 https stackoverflow com questions 27434593 django rest framework 3 0 create or update in nested serializer 你好 我无法
  • django - 如何将实际图像文件从一个模型复制到另一个模型?

    我想将项目中的图像从一个模型复制到另一个模型 假设这些是我的模型 class BackgroundImage models Model user models ForeignKey User image models ImageField
  • Django:管理中的 AJAX ManyToManyField

    我要显示ManyToManyFields 在 admin 中就像filter horizontal确实如此 但会在用户在过滤器字段中键入内容时填充选项 有很多选项 一次性加载它们需要很多时间 I found django ajax 过滤字段
  • django.core.exceptions.FieldDoesNotExist:模型没有名为 的字段

    经过一番谷歌搜索后只找到了一个死胡同的话题 https stackoverflow com questions 23356211 django south migration is throwing an error module obje
  • Django 多个具有相同名称的输入字段值

    我需要一些帮助 如何处理具有多个输入字段值且名称相同的表单 而且只有一次查看 这实际上是针对基本问题的形式 我发现这个方法的另一个想法https stackoverflow com a 478406 6396981 https stacko
  • 在 Django 中定期运行一个函数

    我在 Django 中编写一个应用程序来监视一组服务器中的某些服务 我希望定期更新观点 到目前为止 我已经研究过编写自定义管理命令 链接在这里 http docs djangoproject com en dev howto custom

随机推荐

  • 构造函数调用顺序与组合

    我有A类和B类 C 类派生自 B 类 并以 A 类对象作为组合 http ideone com JGT48M http ideone com JGT48M include iostream using namespace std class
  • 如何用python制作帕累托图?

    帕累托图是 Excel 和 Tableau 中非常流行的图表 在 Excel 中我们可以轻松绘制帕累托图 但我没有找到在 Python 中绘制该图的简单方法 我有一个像这样的熊猫数据框 import numpy as np import p
  • 相当于 C# 中的 SQL Server HASHBYTES('sha1', @userpwd )

    我正在尝试将一些存储过程迁移到 C 代码 我试图找到这个函数的等效项HASHBYTES sha1 password 在 C 代码中 生成的值HASHBYTES sha1 Glenw00d 3 在 T SQL 中是 mG gt T O 26
  • Pyinstaller onefile 在某些 Windows 7 计算机上无法启动

    我创建了一个 exe 文件 该文件在某些 Windows 计算机上运行良好 但在其他计算机上运行失败 我还找不到失败的原因 重要数据 x64 exe Windows 7的 Python 3 5 1 pyinstaller 3 0 onefi
  • 正在运行的 bash 脚本挂在某处。我能查出它在哪条线上吗?

    例如 bash 调试器是否支持附加到现有进程并检查当前状态 或者我可以通过查看 proc 中的 bash 进程条目轻松找到答案吗 有没有方便的工具来给出活动文件中的行号 我不想必须终止并重新启动该进程 这是在 Linux Ubuntu 10
  • 理解Python集合的行为

    内置类型的文档set says class set iterable 返回一个新的 set 或 freezeset 对象 其元素取自 可迭代的 集合的元素必须 可散列 没关系 但是为什么会这样 gt gt gt l range 10 gt
  • C++ 中的临界区和返回值

    在尝试从头开始创建线程安全容器类时 我遇到了从访问方法返回值的问题 例如在 Windows 中 myNode getSomeData EnterCriticalSection myCritSec myNode retobj fill ret
  • 打印具有特定数量的零的浮点数

    我知道如何控制小数位数 但是具体如何控制零的数量呢 例如 104 06250000 gt 104 0625 119 00000 gt 119 0 72 000000 gt 72 0 使用十进制模块怎么样 来自文档 http docs pyt
  • 如何将文本环绕在图像或可组合项周围?

    如何将文本环绕在图像或可组合项周围 类似的东西流文本视图 https github com deano2390 FlowTextView在 Jetpack Compose 中 我想知道是否有可能留下一定的空闲空间 这样如果文本太长 它就会断
  • 如何将卡片放入条子应用栏中

    我做了一个 sliverappbar 我想在这个 sliverappbar 上放一张卡片 如何将卡片放在 sliverappbar 上 并且该卡片会随 sliverappbar 一起折叠 该卡应一半在应用栏中 一半在 正文 中 Custom
  • 通过示例查询 Spring Data - In Clause?

    根据 Spring 文档 我只能为 QBE 编写精确匹配 我只需要精确匹配 但在一组值之间 查询的 IN 子句 e g Person p new Person p setId need to match among set of ids E
  • 访问 iframe 中的表单

    我正在尝试访问表单及其元素 该表单位于 iframe 内 访问该表单的 javascript 代码位于主文档内 我不确定我还应该在这个问题中添加什么内容 所以如果我需要添加其他内容 请告诉我 表单和主页在同一域中 Thanks var if
  • 查询失败,错误代码为 13 并显示错误消息“未授权在 [db] 上执行命令 { find:

    我正在使用以下 蒙戈3 2 7 春季 4 3 1 发布 我创建了以下具有以下权限的用户 gt use admin switched to db admin gt db getUser UserAdminNew id admin UserAd
  • 角度跟踪依据和排序依据

    开始使用 Angular 并进行演示 在模型中 事件项包括名为starts at 的开始时间和标题 我有一个使用 ng repeat event in events track by index 的标签 并尝试添加 orderBy even
  • 如何在 VB.Net 中声明 lambda 事件处理程序?

    我相信以下 VB Net 代码与前面的 C 代码等效 然而 VB Net 测试失败 事件处理 Lambda 从未被调用 到底是怎么回事 VB Net 版本 失败
  • 在后台运行 Chrome 扩展程序

    我目前正在创建我的第一个 Chrome 扩展程序 到目前为止一切顺利 这只是我运行多个计时器的一个小测试 但显然 当我打开和关闭扩展程序时 我的所有计时器都会重置 因此 为了保持所有计时器运行 当我关闭扩展程序并使它们在后台页面中运行时 我
  • MapView 自定义 Pin 图问题

    我已经更改了 MapView 引脚图像 但遇到了这个问题 其中一些点不会更改引脚图像 而其中一些会发生变化 问题会出在哪里呢 我添加了一个例子 My Code MKAnnotationView mapView MKMapView mV vi
  • 如何在 ES6 中获取 Set 的第一个元素(EcmaScript 2015)

    在ES6中 我们如何快速获取元素呢 in Set 的 MDN 语法 https developer mozilla org en docs Web JavaScript Reference Global Objects Set 我没有找到答
  • CSS中这个符号是什么意思?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 这是什么 这是关于 CSS 语法时不时出现的问题的集合 这也是一个社区 Wiki 所以邀
  • Django 表单向导和 recaptcha

    我使用以下命令进行了验证码集成Django 片段 http www djangosnippets org snippets 1653 settings py RECAPTCHA PUBLIC KEY