1,首先pip安装
pip install django-simple-captcha
因为有PIL依赖顺便检查一下有没有pil库
pip install pillow
2,settings.py中的installapp中添加captcha
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'post',
'user',
'captcha',
]
3,总的urls路由中也要添加!
urlpatterns = [
path('admin/', admin.site.urls),
#想使用命名空间 include需要传一个元组 (app路径,app名称)
url(r'^',include(('user.urls','user'),namespace='user')),
url(r'^captcha/',include('captcha.urls')),
]
captcha不支持命名空间的写法
4,然后再froms中添加captchaField字段
from django import forms
from captcha.fields import CaptchaField
class UserForm(forms.Form):
username = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
password = forms.CharField(label="密码", max_length=256, widget=forms.PasswordInput(attrs={'class': 'form-control'}))
captcha=CaptchaField(label='验证码')
5,然后配置一下登录的views.py文件中这样写
from django.views import View
from user.froms import UserForm
from user.models import *
# Create your views here.
class Login(View):
def get(self,request):
capt=UserForm()
return render(request,'login.html',locals())
local()会把当前函数内的局部变量变成一个dict
6,最后再模板文件中接收一下这个变量
<form method="post" action="/login/">
{% csrf_token %}
账号:<input type="text" maxlength="20" name="username"><br>
密码:<input type="password" maxlength="20" name="password"><br>
{{ capt.captcha }}
<span style="color: red;">{{ error }}</span>
<input type="submit" value="登录">
</form>
这样就ok了 打开看一看把
如果大小不合适 还可以再调整
ps:
如果报OSError: cannot open resource错误
出现这个问题的根本原因是因为字体的问题,系统中的字体并不存在要调用的字体即Vera.ttf字体,所以在查找字体时会报错误,最简单和直接的办法就是安装一下,
其实在安装完captcha之后,其根目录下已经有了这个字体,路径在F:django项目中\env\Lib\site-packages\captcha\fonts\vear.ttf
点击安装即可