我想在我的网站上获取AreYouAHuman capcha, 我大部分时间都在努力,问题就是没有出现。
这是render'd html的一部分
<label for="id_session_secret">Are You Human</label>
<br>
<div id="AYAH"></div><script type="text/javascript" src="https://ws.areyouahuman.com/ws/script/87e31f12336132203bdde2da8c93269fccdd5f52"></script>
<p></p>
这就是我在浏览器中看到的
> Are You Human <div id="AYAH"></div><script type="text/javascript"
> src="https://ws.areyouahuman.com/ws/script/87e31f12336132203bdde2da8c93269fccdd5f52"></script>
这是我的实施
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# turtle.forms.py
#
# Copyright 2013 Brian Scott Carpenter <talisman@talisman-Pangolin-Performance>
from django import forms
from django.conf import settings
import ayah
ayah.configure(
settings.AREYOUHUMAN_PUBLISHER_KEY,
settings.AREYOUHUMAN_SCORING_KEY,
)
from django.forms import Field, ValidationError, Form
from django.forms.widgets import Widget
#Create a wdiget that renders the AreYouHuman html
class AreYouHumanWidget(Widget):
def render(self, name, value, attrs=None):
return ayah.get_publisher_html()
#AreYouHuman uses a test field (session_secret) for validation
class AreYouHumanField(Field):
#Use the AreYouHuman HTML
widget = AreYouHumanWidget
#Validate agianst AreYouHuman
def validate(self, value):
if not ayah.score_result(value):
raise ValidationError("You may not be human.")
class Turtle_Form(forms.ModelForm):
''' This is code to make sure the User automatically saves the
user to the database in context.
'''
session_secret = AreYouHumanField(label="Are You Human")
def save(self, *args, **kwargs):
kwargs['commit']=False
obj = super(Turtle_Form, self).save(*args, **kwargs)
if self.request:
obj.user = self.request.user
obj.save()
return obj #<--- Return saved object to caller.
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
return super(Turtle_Form, self).__init__(*args, **kwargs)
模板看起来像
{% extends "base.html" %}
{% load i18n zinnia_tags %}
{% load url from future %}
{% block title %}tempilo.org{% endblock %}
{% block content %}
<form action="" method="post">{% csrf_token %}
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}
<br>
{{ field | safe }}
<p></p>
</div>
{% endfor %}
<p><input type="submit" value="Save" /></p>
</form>
{% endblock %}
答案 0 :(得分:1)
您可能需要调用小部件呈现方法中的ayah.get_publisher_html()
来调用django.utils.safestring.mark_safe()
,以防止它被自动调整。