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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
                            <input  type="text" id="id_email" name="email" value="None" placeholder="请输入您的邮箱地址" />
                        </div>
                        <div class="form-group marb8 ">
                            <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
                            <input type="password" id="id_password" name="password"  value="None" placeholder="请输入6-20位非中文字符密码" />
                        </div>
                        <div class="form-group marb8 captcha1 ">
                            <label>&nbsp;&nbsp;</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>

 

posted @ 2017-03-01 23:11  Vincen_shen  阅读(456)  评论(0)    收藏  举报