django admin中的验证码

django admin中的验证码,django,django-admin,Django,Django Admin,有django管理员的验证码插件吗 我想在管理员登录时添加此功能。您看过吗?您看过吗?您可以覆盖类并设置登录表单和登录模板。但在这种情况下,您需要通过自定义AdminSite对象注册所有模型。您可以重写类并设置登录表单和登录模板。但在这种情况下,您需要通过自定义的AdminSite对象注册所有模型。一种方法是强制/admin使用另一个登录视图()。我认为您必须在该代码段中导入登录所需的decorator 现在,您可以提供自己的实现,即recaptcha。 您可以轻松地将其集成到自定义登录表单中(

有django管理员的验证码插件吗


我想在管理员登录时添加此功能。

您看过吗?

您看过吗?

您可以覆盖类并设置登录表单和登录模板。但在这种情况下,您需要通过自定义AdminSite对象注册所有模型。

您可以重写类并设置登录表单和登录模板。但在这种情况下,您需要通过自定义的AdminSite对象注册所有模型。

一种方法是强制/admin使用另一个登录视图()。我认为您必须在该代码段中导入登录所需的decorator

现在,您可以提供自己的实现,即recaptcha。 您可以轻松地将其集成到自定义登录表单中(http://code.google.com/intl/de-DE/apis/recaptcha/docs/display.html). 在authentication视图中,您只需检查来自recaptcha api的返回值(它返回“true”或“false”作为字符串的第一部分,因此将其拆分),如下所示:

import urllib, urllib2
def recaptcha(request, postdata):
        rc_challenge = postdata.get('recaptcha_challenge_field','')
        rc_user_input = postdata.get('recaptcha_response_field', '').encode('utf-8')
        url = 'http://www.google.com/recaptcha/api/verify'
        values = {'privatekey' : 'XXXXXXXXXXXXXXXXXXXXXXX', 'remoteip': request.META['REMOTE_ADDR'], 'challenge' : rc_challenge, 'response' : rc_user_input,}
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        result = response.read().split()[0]
        response.close()
        return result
在您的视图中,检查以下POST数据:

def login_view(request, template_name="login.html"):   
if request.method == 'POST':
        postdata = request.POST.copy()
        captcha = recaptcha(request, postdata)
        form = LoginUserForm(request, postdata)
        if captcha == "false":
            return render_to_response(template_name, locals(),
                              context_instance=RequestContext(request))
        if form.is_valid():
        # do authentication here
else:
# just display the login_form on GET request
如果用户输入的验证码返回false,则可以使用变量“captcha”在模板中呈现错误消息。您还必须定义自己的LoginUserPerform,以便在单独的自定义HTML模板中使用

这只是我脑海中的一个小概念,我认为,一个更优雅的方式可能是编写一个自定义验证码小部件


希望这些想法能带来一个可能的解决方案。

一个想法是强制/admin使用另一个登录视图()。我认为您必须在该代码段中导入登录所需的decorator

现在,您可以提供自己的实现,即recaptcha。 您可以轻松地将其集成到自定义登录表单中(http://code.google.com/intl/de-DE/apis/recaptcha/docs/display.html). 在authentication视图中,您只需检查来自recaptcha api的返回值(它返回“true”或“false”作为字符串的第一部分,因此将其拆分),如下所示:

import urllib, urllib2
def recaptcha(request, postdata):
        rc_challenge = postdata.get('recaptcha_challenge_field','')
        rc_user_input = postdata.get('recaptcha_response_field', '').encode('utf-8')
        url = 'http://www.google.com/recaptcha/api/verify'
        values = {'privatekey' : 'XXXXXXXXXXXXXXXXXXXXXXX', 'remoteip': request.META['REMOTE_ADDR'], 'challenge' : rc_challenge, 'response' : rc_user_input,}
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        result = response.read().split()[0]
        response.close()
        return result
在您的视图中,检查以下POST数据:

def login_view(request, template_name="login.html"):   
if request.method == 'POST':
        postdata = request.POST.copy()
        captcha = recaptcha(request, postdata)
        form = LoginUserForm(request, postdata)
        if captcha == "false":
            return render_to_response(template_name, locals(),
                              context_instance=RequestContext(request))
        if form.is_valid():
        # do authentication here
else:
# just display the login_form on GET request
如果用户输入的验证码返回false,则可以使用变量“captcha”在模板中呈现错误消息。您还必须定义自己的LoginUserPerform,以便在单独的自定义HTML模板中使用

这只是我脑海中的一个小概念,我认为,一个更优雅的方式可能是编写一个自定义验证码小部件


希望这些想法能带来一个可能的解决方案。

我不知道是否有人已经为此设计了插件。您可以创建自己的登录视图,只需记住“后端”需要一个经过身份验证的用户,该用户继承了角色admin和editor(希望这些是角色的正确术语)。您可能是对的。非常感谢。为什么在管理员登录?这有什么作用?如果你打算在某个地方使用验证码,你会希望在创建帐户时使用它。我的意思是登录django管理工具,通常使用url,我不知道是否有人已经为此做过任何插件。您可以创建自己的登录视图,只需记住“后端”需要一个经过身份验证的用户,该用户继承了角色admin和editor(希望这些是角色的正确术语)。您可能是对的。非常感谢。为什么在管理员登录?这有什么作用?如果你打算在某个地方使用验证码,你会希望在创建帐户时使用它。我的意思是在django管理工具中登录,通常带有url链接,谢谢链接。它在django管理中如何帮助我?据我所知,您可以使用它自己实现自定义功能,因为它还不可用。保证这将是一个很大的工作。感谢链接。它在django管理中如何帮助我?据我所知,您可以使用它自己实现自定义功能,因为它还不可用。保证会有很多工作要做。