Python快速建站系列-Part.Three-注册和登录

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

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

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



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

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

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

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

 1 {% extends "main.html" %}
 2 {% block content %}
 3 <form role="form"  action="/sign/up" method="POST">
 4     <div class="form-group">
 5         <label for="exampleInput"></label>用户名<input class="form-control" name="username" />
 6     </div>
 7     <div class="form-group">
 8         <label for="exampleInputPassword1">密码</label><input type="password" class="form-control" id="exampleInputPassword1" name="password" />
 9     </div>
10     <div class="form-group">
11         <label for="exampleInput">昵称</label><input class="form-control"  name="nickname" />
12     </div>
13     <div class="checkbox">
14         <label><input type="checkbox" />Check me out</label>
15     </div> <button type="submit" class="btn btn-default">提交</button>
16 </form>
17 {% end %}

再写个登录页面signin.html↓

 1 {% extends "main.html" %}
 2 {% block content %}
 3 <form role="form" action="/sign/in" method="POST">
 4     <div class="form-group">
 5         <label for="exampleInput"></label>用户名<input class="form-control" name="username" />
 6     </div>
 7     <div class="form-group">
 8         <label for="exampleInputPassword1">密码</label><input type="password" class="form-control" id="exampleInputPassword1" name="password" />
 9     </div>
10     <div class="checkbox">
11         <label><input type="checkbox" />Check me out</label>
12     </div> <button type="submit" class="btn btn-default">登录</button>
13 </form>
14 {% end %}

然后写SignHandler↓

 1 class SignHandler(web.RequestHandler):
 2     def get(self,choice):
 3         if choice == ‘in‘:
 4             self.render(‘signin.html‘)
 5         else if choice == ‘up‘:
 6             self.render(‘signup.html‘)
 7     def post(self,choice):
 8         coll = self.application.db.users
 9         if choice == ‘in‘:
10             username = self.get_argument(‘username‘)
11             if coll.find_one({‘username‘:username}):
12                 if self.get_argument(‘password‘)==coll.find_one({‘username‘:username})[‘password‘]:
13                     self.set_cookie(‘username‘,username)
14                     self.set_cookie(‘nickname‘,coll.find_one({‘username‘:username})[‘nickname‘])
15                     self.redirect(‘/‘)
16                 else:
17                     self.write({‘error‘:‘password is wrong‘})
18             else:
19                 self.write({‘error‘:‘no this user‘})
20         else if choice == ‘up‘:
21             username = self.get_argument(‘username‘)
22             password = self.get_argument(‘password‘)
23             nickname = self.get_argument(‘nickname‘)
24             if coll.find_one({‘username‘:username}):
25                 self.write({‘error‘:‘the username has been used‘})
26             else:
27                 coll.insert({‘username‘:username,‘password‘:password,‘nickname‘:nickname,‘roleid‘:0})
28                 self.redirect(‘/‘)

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

--Part.Three--

时间: 2024-11-08 19:19:10

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

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

源代码都在github上:https://github.com/SSSDOG/SmallStudyStation 既然是用Python快速建站,第一步选择框架,鉴于Django有点复杂对新手不是很友好所以选择Tornado,数据库的话用MongoDB. 建站也少不了前端,我是用的bootstrap,从http://www.bootcss.com/这里下载就行,或者直接用它提供的CDN. 首先安装Python需要的模块 1 import tornado 2 import pymongo pymon

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

|版权声明:本文为博主原创文章,未经博主允许不得转载. Part.Three中实现了注册和登录的功能,那这一节完成主页内容的填充,并且主页中要实现简单的可以查找代码的功能. 而且有于公共代码部分存储在本机,所以用存储路径的方式存储本地代码的信息. 先写了index.html↓ 1 {% extends "main.html" %} 2 {% block content %} 3 <nav class="navbar navbar-default navbar-stati

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

|版权声明:本文为博主原创文章,未经博主允许不得转载. 其实到这里网站的基本功能已经完成一半了,第六节就完成文章内容的阅读功能. 完成blogview.html↓ {% extends "main.html" %} {% block content %} <nav class="navbar navbar-default navbar-static-top" role="navigation"> <div class="

PHPCMS快速建站系列之pc:get标签的应用

GET标签使用方式如下: {pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz" return="data"} <ul> {loop $data $key $val} {$val[username]}<br /> {/loop} </ul> {$pages}

PHPCMS快速建站系列之getcache()的用法

/** * 读取缓存,默认为文件缓存,不加载缓存配置. * @param string $name 缓存名称 * @param $filepath 数据路径(模块名称) caches/cache_$filepath/ * @param string $config 配置名称 */ function getcache($name, $filepath='', $type='file', $config='') { if(!preg_match("/^[a-zA-Z0-9_-]+$/",

PHPCMS快速建站系列之需要掌握的函数

路径:phpcms\libs\classes\model.class.php /** * 执行sql查询 * @param $where   查询条件[例`name`='$name'] * @param $data   需要查询的字段值[例`name`,`gender`,`birthday`] * @param $limit   返回结果范围[例:10或10,10 默认为空] * @param $order   排序方式 [默认按数据库默认方式排序] * @param $group   分组方式

PHPCMS快速建站系列之添加单页模版

单页模板命名:page_xxx.html 以page_开头 在模版所在目录的config.php中添加配置项 'page_xxx.html' => '单网页', 也可以不在config中配置,不过会显示如下,没有中文解释 在后台就可以调用了,如果不行,试试刷新页面

PHPCMS快速建站系列之在线留言

有两种方法 第一种方法: 利用留言板插件,在后台模板中,安装留言板插件使用,这里先不展开. 第二种方法: 表单向导的适用场合: 如果一个前台页面只是为了提交表单数据,那么就非常适合适用表单向导的功能,如下面留言板的案例:如果一个前台页面不只是为了提交表单,还要求在当前前台页面显示提交表单的内容,这种情况就不太适合适用表单向导,更适合将其作为一个模块或插件进行安装,如前台页面需要显示用户留言信息的情况 效果图如下: 1,进入"模块" 2,选择"表单向导" 3,点击&q

Linux VPS/服务器建站系列(二)- 常见的国内云服务器商家

继续接"Linux VPS/服务器建站系列(一)- 哪些人需要用服务器建站"文章,既然我们开始决定选择VPS.服务器作为项目用途.在准备实际的操作之前,笔者先准备罗列国内和国外的常见云服务器商家.因为服务器商家和方案选择与我们实际的项目确实有很大的关系的.对于我们正规的建站或者稳定项目,个人极力不推荐使用个人或者便宜的个人服务商.比如国内服务商建议选择BAT这样的大公司,至少可以确保商家不跑路.同样的,这几年BAT进入云计算市场之后,成本控制的还是比较好的,同样的价格,我们肯定优先选择