Django 验证码之django_simple_captcha

一. 安装

pip install django_simple_captcha

二. 加载到INSTALLED_APPS中

INSTALLED_APPS = [
  # 验证码
  'captcha'
]

三. migrate将验证码表加载到数据库

python manage.py migrate

四. 配置路由

url(r'^captcha/', include('captcha.urls')),

五. 在Form中使用

from django import forms
from captcha.fields import CaptchaField

class RegisterForms(forms.Form):
    email =  forms.EmailField(required=True, error_messages={
        'request': '用户名不能为空',
        'invalid': '格式错误',
        'max_length': '最大长度为32位'
    })
    password = forms.CharField(required=True, max_length=32, error_messages={
        'request': '密码不能为空',
        'max_length': '最大长度为32位'
    })
    captcha = CaptchaField(error_messages={
     'invalid': '验证码错误',
  })

六. 后端代码

from django.shortcuts import render
from django.views.generic import View
from django.contrib.auth.hashers import make_password

from .models import UserProfile
from .forms import LoginForms, RegisterForms

class RegisterView(View):
    def get(self, request):
        register_form = RegisterForms()
        return render(request, 'register.html', {'captcha': register_form})

    def post(self, request):
        register_form = RegisterForms(request.POST)
        if register_form.is_valid():
            email = register_form.cleaned_data.get('email', '')
            password = register_form.cleaned_data.get('password', '')
            user = UserProfile()
            user.username = email
            user.email = email
            user.password = make_password(password)
            user.save()
        else:
            return render(request, 'login.html', {'error': register_form.errors})

七. 前端使用

{{captcha.captcha}}

 

posted @ 2019-08-12 03:13  yyfgrd  阅读(225)  评论(0)    收藏  举报