Django项目实战 - user注册功能 - 验证码
本章重点
pillow图片处理库
Django验证码库 django-simple-capecha 0.4.6
from captcha.fields import CaptchaField #CaptchaField类实现验证码功能
from django.contrib.auth 这里全部放的是跟用户认证相关的模块
安装配置
1. pip install pillow
2. pip install django-simple-capecha==0.4.6
3. add captcha to the INSTALLED_APPS in your settings.py
4. python manage.py migrate
5. url(r'^captcha/', include('captcha.urls')),
Add to Form
在forms.py中定义RegisterForm类
# -*- coding:utf-8 -*- from django import forms from captcha.fields import CaptchaField # 导入CaptchaField类 class LoginForm(forms.Form): username = forms.CharField(required=True, min_length=4) password = forms.CharField(required=True, min_length=6) class RegisterForm(forms.Form): email = forms.EmailField(required=True) password = forms.CharField(required=True) captcha = CaptchaField() #实例化CaptchaField类
在view.py中调用RegisterForm类
from django.contrib.auth.hashers import make_password
from .forms import LoginForm, RegisterForm
from django.views.generic.base import View
class RegisterView(View): def get(self, request): register_form = RegisterForm() return render(request, "register.html", {"register_form": register_form}) def post(self, request): register_form = RegisterForm(request.POST) # 实例化类,并传入request.POST if register_form.is_valid(): pass
register.html中调用register_form.captcha
<form id="email_register_form" method="post" action="register.html" autocomplete="off"> <div class="form-group marb20 "> <label>邮 箱</label> <input type="text" id="id_email" name="email" value="None" placeholder="请输入您的邮箱地址" /> </div> <div class="form-group marb8 "> <label>密 码</label> <input type="password" id="id_password" name="password" value="None" placeholder="请输入6-20位非中文字符密码" /> </div> <div class="form-group marb8 captcha1 "> <label>验 证 码</label> {{ register_form.captcha }} //调用captcha </div> <div class="error btns" id="jsEmailTips"></div> <div class="auto-box marb8"> </div> <input class="btn btn-green" id="jsEmailRegBtn" type="submit" value="注册并登录" /> </form>