为什么 Django-simple-math-captcha 不呈现问题?



我正在尝试将Django-simple-math-captcha集成到我的项目中,但表单没有呈现问题。我已经按照文档中的所有步骤进行操作,并呈现了表单:

{% for field in form %}
{{ field.label_tag }}
{{ field }}
{% if field.errors %}
{{ field.errors }}
{% else %}
{% endif %}
{% endfor %}

我得到验证码标签,即验证码:

和验证码答案输入,

所有验证码错误消息,

但毫无疑问。我做错了什么?

我在 Django 2.0+ 上尝试了这个包,但验证码问题没有得到呈现。这是我从视图打印表单时的输出:

System check identified no issues (0 silenced).
September 28, 2018 - 05:52:00
Django version 2.0.8, using settings 'stackover.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
<input type="text" name="captcha_0" size="5" required id="id_captcha_0" />
<input type="hidden" name="captcha_1" value="2b05507f9541c630c35d55509b05deea6e04e8cc" required id="id_captcha_1" />
[28/Sep/2018 05:52:03] "GET / HTTP/1.1" 200 118

如果你浏览这个包的源代码,你会看到问题被呈现为一个html类captcha-question,这在上面的html输出中是缺失的。然而,在将 Django 降级到 1.8 版后,我的模板中仅{{ form }}渲染了所有三个字段,如下所示,即问题、输入和隐藏的哈希答案。因此,如果您使用的是 Django 2.0+,那么您需要降级以使用此软件包,或者您必须调整此软件包以使用当前版本(我想这将是一些工作!这是我在视图中打印验证码表单时获得的简单输出:

Django version 1.8, using settings 'stackover.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
<tr><th><label for="id_captcha_0">Captcha:</label></th>
<td><span class="captcha-question">What is the result of 1 - 1?</span>
<input id="id_captcha_0" name="captcha_0" size="5" type="text" />
<input id="id_captcha_1" name="captcha_1" type="hidden" value="aad5d3b0165de882bc40cfbfa47f8262d6d8f9da" /></td></tr>
[28/Sep/2018 06:19:03]"GET / HTTP/1.1" 200 425

最新更新