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

上一个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. 深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译

    作者:唐老师,华清远见嵌入式学院讲师. 一.Android4.0系统的下载与编译 Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: htt ...

  2. SQL Server 插入数据后获得自增主键值

    通过SQLServer系统自带函数获取 String sql = "insert into goods values('" + TextBox1.Text + "',&q ...

  3. 树莓派安装LAMP作为服务器

    先运行 sudo apt-get update 更新软件源 1.安装Apache sudo apt-get install apache2 2.安装Mysql sudo apt-get install ...

  4. 分模块创建maven项目(二)

    1.新建Parent项目,MavenProject 2.新建子模块项目,MavenProject 右击项目名 --> NEW --> other 结果,在parent上运行会打出两个包,一 ...

  5. 让Xcode的 stack trace信息可读

    让Xcode的 stack trace信息可读 昨天在写 iOS 代码的时候,调试的时候模拟器崩溃了.异常停在了如下整个 main 函数的入口处: int main(int argc, char *a ...

  6. HTML基础--JS简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、数组、函数、函数调用.avi

    JS简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收 ...

  7. Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  8. bzoj1222: [HNOI2001]产品加工--DP

    DP神题orz dp[i]表示机器1工作i小时,机器2工作dp[i]小时 那么对于每个任务: 选1:dp[i]=dp[i-a]; 选2:dp[i]=dp[i]+b; 选1+2:dp[i]=dp[i-c ...

  9. 讨论一下js获取响应中后台传回来的BigInteger类型的数字时,后几位会自动变为0的问题

    后台返回的json:{"data":12345678912345678912} 在js中获取该data得到的值为:12345678912345680000 后经过实验发现,只有数字 ...

  10. js打开没有地址栏下拉条新窗口

    <script type="text/javascript" language="javascript"> function vNodeAuditL ...