繁体   English   中英

Recaptcha不会以django-crispy-forms形式显示

[英]Recaptcha doesn't show up in django-crispy-forms form

我正在尝试使用此repo在django-crispy-forms表单中实现recaptcha,但是每当我将其放在表单布局中时,它都不会显示。 有什么我想念的吗?

class ServerBumpFormView(LoginRequiredMixin, UpdateView):
model = Server
template_name = "servers/server_bump_form.html"
success_url = reverse_lazy("servers:manage")
fields = ()

def get_queryset(self):
    if not self.request.user.is_superuser:
        return self.model.objects.filter(owner=self.request.user)
    return self.model.objects.all()

def get_form(self, form_class=None):
    form = super().get_form(form_class)
    form.helper = FormHelper()
    captcha = ReCaptchaField(widget=ReCaptchaWidget())
    form.helper.layout = Layout(
        'captcha',
    )
    form.helper.add_input(Submit('submit', 'Bump', css_class='btn-blurple'))
    if form.is_valid():
        obj = form.save(commit=False)
        obj.bumpPoints = obj.bumpPoints + 1
        obj.last_bumped_at = datetime.datetime.now().replace(microsecond=0, tzinfo=pytz.UTC)
        obj.save()

    return form

它还会产生一个KeyError

KeyError: "Key 'captcha' not found in 'ServerForm'. Choices are: ."

我也面临同样的问题,并且能够使用HTML布局解决它。

您可以将ReCapcha html代码与HTML布局元素一起使用。

form.helper.layout = Layout(
    HTML('<div class="form-group"><div class="g-recaptcha" data-sitekey="%s"></div></div>' %RECAPTCHA_PUBLIC_KEY),
)

不要忘记从设置中导入HTML和验证码代码变量,或者手动添加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM