增加views的类

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

增加urls.py的url

url(r'^register/$', RegisterView.as_view(), name="register")

这样可以调用register.html了,修改index.html的注册按键的跳转代码

<a style="color:white" class="fr registerbtn" href="{% url 'register' %}">注册</a>

这样就实现了点击 注册 跳转到register.html的功能

然后修改regiter.html文件

在开头增加{% load staticfiles %}为了后面可以用static的相对地址

{% load staticfiles %}

因为我们的settings下设定过static的url,

所以可以直接修改

<link rel="stylesheet" type="text/css" href="../css/reset.css">

<link rel="stylesheet" type="text/css" href="{% static 'css/reset.css' %}">

同理修改其它的静态文件static相对路径

安装第三方验证码库

https://github.com/mbi/django-simple-captcha

安装方法

https://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation

安装0.4.6版本!!!!!

pip install  django-simple-captcha==0.4.6

发现出现问题连接不上服务器

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x000000000

40929E8>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/django-simple-captcha/

那只能换连接源了

pip install  django-simple-captcha==0.4.6 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

OK!!!安装好

在settings的INSTALLED_APPS增加captcha

生成数据库迁移



可以看到数据库的表了

在urls.py的urlpatterns内增加

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

用到include需要增加

from django.conf.urls import include

在forms.py内增加对注册的验证

from captcha.fields import CaptchaField

class RegisterForm(forms.Form):
email = forms.EmailField(required=True)
password = forms.CharField(required=True, min_length=6)
captcha = CaptchaField()

在views.py下修改RegisterView类实例化form并render给html

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

然后在register.html内的验证码出增加代码去支持验证码功能

<div class="form-group marb8 captcha1 ">
<label>验&nbsp;证&nbsp;码</label>
{{ register_form.captcha }}
</div>

这样就可以支持验证码了。如下图

接下来修改验证form的逻辑,为了让输出的验证码错误信息为中文,修改form

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

然后修改views.py增加POST的表单提交验证和保存功能,这里需要用到密码加密的头文件

from django.contrib.auth.hashers import make_password

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)
if register_form.is_valid():
user_name = request.POST.get("email", "")
pass_word = request.POST.get("password", "")
user_profile = UserProfile()
user_profile.username = user_name
user_profile.email = user_name
user_profile.password = make_password(pass_word)
user_profile.save()
print "test"

最新文章

  1. Isolation-based Anomaly Detection
  2. MySQL7:视图
  3. Bucky – 免费开源的实时用户监控工具
  4. iOS 延迟执行代码
  5. Vue.js中组件传参的方法 - 基于webpack模板
  6. Linux入门:usermod - 修改用户帐户信息
  7. python+requests库,接口自动化
  8. Tomcat start.bat闪退:JRE_HOME环境变量配置不对
  9. 【Vue.js】基于vue的实时搜索,在结果中高亮显示关键词
  10. Spring配置文件beans.xml头部配置解释
  11. 【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
  12. sqlalchemy(一)常用连接参数及包
  13. linux shell 杂
  14. unity3DGI
  15. DataTable 快速导入数据库——百万条数据只需几秒
  16. 汇编 AND 运算
  17. [SQL] 请教一下 count里面有case when 一般情况下啥时候用
  18. poj_2352 线段树
  19. jenkins+docker持续集成实验
  20. [Swift实际操作]八、实用进阶-(6)通过属性进行对象间的消息传递

热门文章

  1. Differential Geometry之第十章极小曲面
  2. Android 绘制圆环
  3. UML概述
  4. 【BZOJ】1631: [Usaco2007 Feb]Cow Party(dijkstra)
  5. 清除信号量队列导致zabbix自动关闭
  6. ACM计算几何模板——圆和球
  7. hdu 2553:N皇后问题(DFS遍历,水题)
  8. iOS开发之--iOS APP打包的时候出现的四个选项
  9. Xmanager连接图形界面
  10. 关于recycler遇到的问题