Agus Makmun

I'm Programmer for Python & Django. I've made quite a few web apps, especially on Django.

Add reCAPTCHA to default Django admin login form

06 Oct 2021 » python, django, security

Previously makesure you already install the django-recaptcha, don’t miss also to Sign up for reCAPTCHA

pip install django-recaptcha

Add 'captcha' to your INSTALLED_APPS setting.


Add the Google reCAPTCHA keys generated into your Django settings with RECAPTCHA_PUBLIC_KEY and RECAPTCHA_PRIVATE_KEY.

RECAPTCHA_PUBLIC_KEY = 'MyRecaptchaKey123'
RECAPTCHA_PRIVATE_KEY = 'MyRecaptchaPrivateKey456'

Then modify the default authentication form with add new captcha field, in your myapp/

from django.conf import settings
from django.contrib.auth.forms import AuthenticationForm

from captcha.fields import ReCaptchaField
from captcha.widgets import ReCaptchaV2Checkbox

class AuthAdminForm(AuthenticationForm):

    if not settings.DEBUG:
        captcha = ReCaptchaField(widget=ReCaptchaV2Checkbox(
                'data-theme': 'light',
                'data-size': 'normal',
                # 'style': ('transform:scale(1.057);-webkit-transform:scale(1.057);'
                #           'transform-origin:0 0;-webkit-transform-origin:0 0;')

Then in your myproject/;

from django.contrib import admin
from django.urls import include, path

from myapp.forms import AuthAdminForm

# modify the default admin login form
# with add reCAPTCHA feature to fix bruteforce issue.
admin.autodiscover() = AuthAdminForm = 'account/admin/login.html'

urlpatterns = [

Also don’t miss to add the captcha field into template templates/account/admin/login.html;