【Django】django-simple-captcha 验证码配置
1. django-simple-captcha 下载
pip install django-simple-captcha
2. 配置
2.1 settings.py 配置
# 注册 app
INSTALLED_APPS = [
....
'captcha', # 图形验证码
]
# 导入 库
import string
import random
# 自定义验证码
def generate_custom_challenge():
length = 6 # 验证码长度
characters = string.ascii_letters + string.digits # 包含字母和数字的字符集
captcha = ''.join(random.choice(characters) for _ in range(length)) # 生成随机验证码
question = captcha # 验证码的显示文本
return question, captcha
# 配置 captcha
# CAPTCHA_LENGTH = 4 # 设置验证码位数 默认: 4
CAPTCHA_TIMEOUT = 5 # 超时(minute)
CAPTCHA_FONT_SIZE = 24 # 字体大小 默认:22
# CAPTCHA_IMAGE_SIZE = (130, 45) # 设置 图片大小 默认: (200, 60)
CAPTCHA_CHALLENGE_FUNCT = generate_custom_challenge # 验证码字符集, 自定义
# CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge' # 验证码字符集
# CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge' # 验证码字符集
2.2 总 urls.py 配置
from django.urls import include
urlpatterns = [
# 图片验证码
path('captcha/', include('captcha.urls')),
]
2.3 views.py 配置
from captcha.helpers import captcha_image_url
from captcha.models import CaptchaStore
# 生成图片验证码
class GenerateCaptcha(APIView):
authentication_classes = [] # 免认证
permission_classes = []
def get(self, request):
captcha_key = CaptchaStore.generate_key()
image_url = captcha_image_url(captcha_key)
res = {
'key': captcha_key,
'image_url': image_url
}
return JsonResponse(res)
# 验证图片验证码
class VerifyCaptcha(APIView):
def post(self, request):
print(request.POST)
captcha_key = request.POST.get('captcha_key')
captcha_value = request.POST.get('captcha_value')
CaptchaStore.remove_expired() # 清除过期验证码
try:
captcha = CaptchaStore.objects.get(challenge=captcha_value, hashkey=captcha_key)
captcha.delete() # 删除
valid = True
except CaptchaStore.DoesNotExist:
valid = False
except:
valid = 'xxxx'
res = valid
return JsonResponse(res)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!