[py][mx]django邮箱注册的验证码部分-django-simple-captcha库使用

邮箱注册-验证码

验证码使用第三方库django-simple-captcha

这个安装图形插件步骤官网有哦

- 1.Install django-simple-captcha via pip: pip install  django-simple-captcha
- 2.Add captcha to the INSTALLED_APPS in your settings.py
- 3.Run python manage.py migrate
- 4.Add an entry to your urls.py:

urlpatterns += [
    url(r'^captcha/', include('captcha.urls')),
]


- forms.py里使用
from django import forms
from captcha.fields import CaptchaField

class CaptchaTestForm(forms.Form):
    myfield = AnyOtherField()
    captcha = CaptchaField()
pip install -i https://pypi.douban.com/simple django-simple-captcha

users/forms.py

from captcha.fields import CaptchaField


class RegisterForm(forms.Form):
    email = forms.EmailField(required=True)
    password = forms.CharField(required=True)
    captcha = CaptchaField(error_messages={"invalid":"验证码错误"})

users/views.py

class RegisterView(View):
    def get(self, request):
        register_form = RegisterForm()#实例化register表单
        return render(request, 'register.html', {'register_form': register_form}) #定制错误提示

    def post(self, request):
        pass

urls.py

from users import views

urlpatterns = [
    path('register/', views.RegisterView.as_view(), name="register"),  # 邮箱注册url
    path('captcha/', include('captcha.urls')),# 图形验证码
]

templates/register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<div>
    <h1>邮箱注册</h1>
    <form action="/register/" method="post">
        <p><input type="text" name="email" placeholder="username"></p>
        <p><input type="text" name="password" placeholder="password"></p>
        <p>{{ register_form.captcha }}</p>
        <p><input type="submit"></p>
        {% csrf_token %}
    </form>
</div>
</body>
</html>

图形验证码验证原理

<p>{{ register_form.captcha }}</p>最终生成


<p>
<img src="/captcha/image/16fd37375ff4cd3c5dd603f61316daac3a728099/" alt="captcha" class="captcha" /><input id="id_captcha_0" name="captcha_0" type="hidden" value="16fd37375ff4cd3c5dd603f61316daac3a728099" />
<input autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false" id="id_captcha_1" name="captcha_1" type="text" />

</p>
posted @ 2018-02-01 22:28  mmaotai  阅读(433)  评论(0编辑  收藏  举报