初探Django-simple-captcha

Doc:http://django-simple-captcha.readthedocs.io/en/latest/

在项目中加入一个简单的图片验证码,选择找个轮子,就找到了这个.
官方文档还比较老,使用的时候暂时没有发现什么坑,在此记录一下.

安装:

pip 安装即可,django中添加app captcha,url中也加入相应的设置即可.

#settings.py
INSTALLED_APPS = [
     ...
    "captcha",
]
#url.py
captcha = [url(r'^captcha/', include('captcha.urls'))]
urlpatterns += captcha

settings.py里还有一些其他的配置项.可以对验证码图片的内容,格式,样式以及表单模板进行修改.

http://django-simple-captcha.readthedocs.io/en/latest/advanced.html#configuration-toggles

之后需要运行python manage.py migrate captcha命令,同步数据表.

使用

配合表单使用,可以很方便的实现后端验证的功能.傻瓜式操作.

from django import forms
from captcha.fields import CaptchaField

class CaptchaTestForm(forms.Form):
    myfield = AnyOtherField()
    captcha = CaptchaField()


def some_view(request):
    if request.POST:
        form = CaptchaTestForm(request.POST)

        # 验证表单: 验证码也会自动验证
        if form.is_valid():
            pass
            #do sth
    else:
        form = CaptchaTestForm()

    return render(request, 'template.html',{"form" :form})

可以选择直接将验证码添加到现有表单中,即上文的样子.
也可以拆分使用.

class CaptchaForm(forms.Form):
    captcha = CaptchaField(label="验证码")
class RegisterForm(forms.Form):
    username = forms.CharField(max_length=16,label="用户名")
    password = forms.CharField(max_length=32,label="密码")

def some_view(request):
    if request.POST:
        captcha = CaptchaForm(request.POST):
            if captcha.is_valid():
                #do sth. 比如验证另一个表单
                #form = RegisterForm(request.POST)
                ...

这样做可以避免修改所有表单,但是相应的view函数要做出更多调整,根据实际情况进行调整.

前端

前端需要注意的地方主要是,验证码字段包含了input和img两个元素,还有一个hidden的input来传递验证码id,这三个字段的布局可以通过setting中的设置或者自定义模板进行修改.

你可能感兴趣的:(初探Django-simple-captcha)