美文网首页
初探Django-simple-captcha

初探Django-simple-captcha

作者: 一斤蔬菜 | 来源:发表于2017-09-21 17:36 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/ooktextx.html