增加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"

django 用户注册功能实现的更多相关文章

  1. 9、Django实战第9天:用户注册功能

    今天完成的是用户注册功能... 首先把注册页面的前端文件register.html复制到templates目录下 编辑users.views.py,创建一个注册的类 class RegisterVie ...

  2. Django项目: 3.用户注册功能

    本章内容的补充知识点 导入库的良好顺序: 1.系统库 2.django库 3.自己定义的库(第三方库) redis缓存数据库的数据调用速度快,但是不利于长时间保存. mysql用于长时间存储,但是调用 ...

  3. Web---创建Servlet的3种方式、简单的用户注册功能

    说明: 创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式. 上篇博客地址:http://blog.csdn.net/qq_26525215 ...

  4. Django 分页功能

    Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...

  5. Django介绍、安装配置、基本使用、Django用户注册例子

    Django介绍     Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站     DjangoMTV的思想         没有controller ...

  6. .NET MVC 4 实现用户注册功能

    初学MVC,踩了不少坑,所以通过实现一个用户注册功能把近段时间学习到的知识梳理一遍,方便以后改进和查阅. 问题清单: l 为什么EF自动生成的表名后自动添加了s? l 如何为数据库初始化一些数据? l ...

  7. Django——分页功能Paginator

    Django分页功能----Paginator Paginator所需参数: Paginator(object_list,per_page) Paginator常用属性: per_page: 每页显示 ...

  8. 如何巧妙地在基于 TCP Socket 的应用中实现用户注册功能?

    通常,在基于TCP的应用中(比如我开源的GGTalk即时通信系统),当TCP连接建立之后,第一个请求就是登录请求,只有登录成功以后,服务器才会允许客户端进行其它性质的业务请求.但是,注册用户这个功能比 ...

  9. RandomAccessFile()实现用户注册功能, 新增,查询,更新

    package seday03.raf;import java.io.IOException;import java.io.RandomAccessFile;import java.util.Arra ...

随机推荐

  1. Tensorflow 梯度下降实例

    # coding: utf-8 # #### 假设我们要最小化函数 $y=x^2$, 选择初始点 $x_0=5$ # #### 1. 学习率为1的时候,x在5和-5之间震荡. # In[1]: imp ...

  2. 最新Android面试题集锦

    近期由于某些原因想换工作,整理一下个人认为面试中还比較值得记录的一些题目,给须要找这方面工作的人一个借鉴. 下面基本仅仅记录题目或者大概答案,假设大家有比較具体的解答或者比較好的面试题木,希望各位看到 ...

  3. php计算数组相同值出现次数的代码(array_count_values)

    php计算数组相同值出现次数,可以使用php自带函数array_count_values : 说明 array array_count_values ( array $input )array_cou ...

  4. when case group by 的用法集合

    1.用那个以前大家都熟悉的例子,要求是依旧下面的表格求每个大洲的人口总和 国家(countrcoungry) 人口(population) 中国 600 美国 100 加拿大 100 英国 200 法 ...

  5. 漫游Kafka设计篇之消息传输的事务定义(5)

    之前讨论了consumer和producer是怎么工作的,现在来讨论一下数据传输方面.数据传输的事务定义通常有以下三种级别: 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输. 最 ...

  6. 利用WM_COPYDATA消息实现进程间通信

    进程间通信最简单的方式就是发送WM_COPYDATA消息,下面通过例子来实现. 发送WM_COPYDATA消息: SendMessage(hRecvWnd, WM_COPYDATA, (WPARAM) ...

  7. Python 使用正则表达式匹配IP信息

    使用正则表达式匹配IP地址 .MAC地址 .网卡名称: #!/usr/bin/env python #-*- coding:utf-8 -*- import re from subprocess im ...

  8. 自定义View中的Path

    我们用Path可以画返回图标,可以画搜索图标,也可以画一个圆,DIDI

  9. 控制iOS 7中的状态栏

    本文转载至:http://blog.csdn.net/pucker/article/details/12112105 苹果终于发布了iOS 7正式版,大批的用户都已经纷纷进行了升级.如果App是由Xc ...

  10. 微软发布新版 Skype Linux 客户端

    导读 前两天,微软说要给Linux 用户带来一个令人兴奋的新闻,今天,这个新闻来了.它刚刚为 Linux 发布了一个新的 Skype 客户端.此次发布,微软为 Linux 带来的 Skype 客户端与 ...