|版权声明:本文为博主原创文章,未经博主允许不得转载。

上一个Part已经给TSSS编好了一个简单的Web服务,网页的基础模版也写好了,那从这个Part开始就慢慢增加编写功能。

先写基础功能:注册和登录的实现


复杂的安全cookies实现可以看这里 使用安全cookies,因为快速建站这个其实只相当于一个小demo,所以复杂的用户系统会在以后实现,现在只需要实现拥有用户名,密码,昵称和用户权限声明的一个用户系统就可以了。

看一下users的数据库规范然后再写代码

#数据库规范
codedb:users
	_id 		        ID
	username 	     用户名
	password     	     密码
	nickname	        昵称
        roleid                 权限声明

先写出来注册页面signup.html↓

 {% extends "main.html" %}
 {% block content %}
 <form role="form"  action="/sign/up" method="POST">
     <div class="form-group">
         <label for="exampleInput"></label>用户名<input class="form-control" name="username" />
     </div>
     <div class="form-group">
         <label for="exampleInputPassword1">密码</label><input type="password" class="form-control" id="exampleInputPassword1" name="password" />
     </div>
     <div class="form-group">
         <label for="exampleInput">昵称</label><input class="form-control"  name="nickname" />
     </div>
     <div class="checkbox">
         <label><input type="checkbox" />Check me out</label>
     </div> <button type="submit" class="btn btn-default">提交</button>
 </form>
 {% end %}

再写个登录页面signin.html↓

 {% extends "main.html" %}
 {% block content %}
 <form role="form" action="/sign/in" method="POST">
     <div class="form-group">
         <label for="exampleInput"></label>用户名<input class="form-control" name="username" />
     </div>
     <div class="form-group">
         <label for="exampleInputPassword1">密码</label><input type="password" class="form-control" id="exampleInputPassword1" name="password" />
     </div>
     <div class="checkbox">
         <label><input type="checkbox" />Check me out</label>
     </div> <button type="submit" class="btn btn-default">登录</button>
 </form>
 {% end %}

然后写SignHandler↓

 class SignHandler(web.RequestHandler):
     def get(self,choice):
         if choice == 'in':
             self.render('sign\signin.html')
         else if choice == 'up':
             self.render('sign\signup.html')
     def post(self,choice):
         coll = self.application.db.users
         if choice == 'in':
             username = self.get_argument('username')
             if coll.find_one({'username':username}):
                 if self.get_argument('password')==coll.find_one({'username':username})['password']:
                     self.set_cookie('username',username)
                     self.set_cookie('nickname',coll.find_one({'username':username})['nickname'])
                     self.redirect('/')
                 else:
                     self.write({'error':'password is wrong'})
             else:
                 self.write({'error':'no this user'})
         else if choice == 'up':
             username = self.get_argument('username')
             password = self.get_argument('password')
             nickname = self.get_argument('nickname')
             if coll.find_one({'username':username}):
                 self.write({'error':'the username has been used'})
             else:
                 coll.insert({'username':username,'password':password,'nickname':nickname,'roleid':0})
                 self.redirect('/')

这样注册和登录的功能就实现了

--Part.Three--

Python快速建站系列-Part.Three-注册和登录的更多相关文章

  1. Python快速建站系列-Part.One-组装开发环境

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 源代码都在github上:SmallStudyStation 现在是个demo,但回来会租个服务器,等功能完善了放到服务器上挂着,域名jusot ...

  2. Python快速建站系列-Part.Five.1-个人主页及发表文章

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 现在的TSSS已经有了注册和登录的功能,首页的内容也填充好了,那这一节就完成用户个人主页的内容和发表文章功能的实现. 先完成用户个人主页的use ...

  3. Python快速建站系列-Part.Four-首页内容填充

    |版权声明:本文为博主原创文章,未经博主允许不得转载. Part.Three中实现了注册和登录的功能,那这一节完成主页内容的填充,并且主页中要实现简单的可以查找代码的功能. 而且有于公共代码部分存储在 ...

  4. Python快速建站系列-Part.Two-结构化和布局

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 首先明确我们要建一个什么样的站,作为教程(也算自己使用tornado的一个小总结),自然功能不能太多,但又满足一个普通网站需要的就行了. 目前想 ...

  5. Python快速建站系列-Part.Six-文章内容浏览

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 其实到这里网站的基本功能已经完成一半了,第六节就完成文章内容的阅读功能. 完成blogview.html↓ {% extends "m ...

  6. Python快速建站系列-Part.Five.3-个人主页及资料页面

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 第五部分最后一节,完成个人主页里资料页面的个人资料的展示和修改功能,不过毕竟功能比较少,个人资料其实只有昵称一项,手动滑稽. 一如既往先写出来u ...

  7. Python快速建站系列-Part.Five.2-个人主页及文章列表

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 从usercen.html就可以发现我为个人主页设了三个分开的小版面:写文章.个人文章目录.个人资料 所以按顺序Part.Five的第二部分就完 ...

  8. PHPCMS快速建站系列之网站迁移(本地到服务器,服务器迁移,更换域名等)

    可能出现的问题: 1.后台登录验证码显示不正常(修改/caches/configs/system.php文件) //网站路径'web_path' => '/', 2.phpsso修改 如果不修改 ...

  9. PHPCMS快速建站系列之搜索功能

    默认模板的搜索功能代码 <div class="bd"> <form action="{APP_PATH}index.php" method= ...

随机推荐

  1. RSA加密算法原理及RES签名算法简介

    第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一对密钥.一个是公钥,给A,B自己持有私钥.A使用B的公钥加密要加密发送的内容,然后B在通过自己的私钥解密 ...

  2. python 之select

    服务端源码 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @author: zengchunyun "& ...

  3. Linux下安装JDK和tomcat

    1.新建用户 2.解压 jdk-7u67-linux-x64.tar.gz 到本地 3.配置环境变量 编辑.bash_profile文件 4.生效 5.安装tomcat 6.验证tomcat是否安装成 ...

  4. LaTex Font Size 字体大小命令

    LaTex中字体大小有很多中等级,分别由下列命令控制: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE ...

  5. 序列化,反序列化,模拟ATM机

    package com.bank.unionpay; //银行卡的接口 public interface I_yinhangka { //抽象方法 //public abstract默认修饰抽象的 p ...

  6. 诅咒JavaScript之:Jquery ajax提交内容异常

    jquery ajax 通过url提交内容,在服务器端获取却出现很奇怪的值,代码如下: ajaxurl = "aspx/logTable.ashx?action=load&Every ...

  7. DBConfigReader.java

    package com.vcredit.ddcash.batch.util; import java.sql.Connection;import java.sql.PreparedStatement; ...

  8. BizTalk开发系列(四) 深入Map测试

    在BizTalk的开发过程中XML消息间的映射是一个很重要的内容.如果只是一般的从源节点的值复制到目标节点的话,BizTalk项目提供的 MAP测试和验证就已经可以满足需求了.但是很多时候需要在映射的 ...

  9. 安卓模拟器研究-root

    http://www.bluestacks.cn/index.asp 下载最新的 BlueStacks 尝试了很久都没有root成功. 百度搜索  找到经验文档 http://jingyan.baid ...

  10. Windows内核 基本数据结构

    驱动对象: 每个驱动程序都会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载时被内核中的对象管理程序所创建的.驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并 ...