第四天:注册和邮件通知
本文摘要:注册模块以及多线程发送邮件通知
上次写了登录验证,所以这次就继续写注册。
注册的关键是往数据库中插入注册信息。
数据库是mysql,建表语句:
create table tuser( id int not null auto_increment, name varchar(32) not null, pwd varchar(32) not null, email varchar(50) not null, join_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, primary key(id), key(name) );
其中id设置为auto_increment,让id自动递增;join_time为TIMESTAMP且默认为CURRENT_TIMESTAMP,功能:插入一条数据时候默认赋值为当前时间,以后更新的时候不会自动更新。如果需要更新为最新的时间,可以把它的值赋为NULL,mysql会自动将其更新为当前值.更多资料在:http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#datetime
如:
update tuser set join_time = null where id = 2;
web.py往数据库插入语句,在web.py的cookbook(http://webpy.org/)和api reference中讲的算是比较清楚的,唯一比较疼的就是insert中的参数_test,说什么配置这个参数可以让我们看到SQL的执行过程,我配置了,结果悲剧了,数据就是不能插入到数据库中。现在也不知道是什么原因导致这个,反正去掉_test之后就正常了。
另外,python的ORM框架不少,以后有机会可以找个试试看,不知道跟Hibernate会不会差不多。
注册功能写完之后就想到了,是不是应该加个邮件验证功能呢?web.py的邮件api还是很方便的(参考cookbook),根据里面的资料配置完之后,重新试了一下,恩?点击注册之后要等好久才跳转页面,额,顺序执行。。于是乎。。想到了多线程,找书,额。。没找到,算了,果断上google百度之。。。于是乎就有了下面这个,
注册模块代码:
def thread_send_mail(email): web.sendmail('acm@jyd.me', email, '注册确认', '您的邮箱在一个无聊的网站被用>了,通知你一下。如果您没有注册,请直接无视本邮件!') class Register: def POST(self): i = web.input() name, pwd, repwd, email = i.name, i.pwd, i.repwd, i.email if name == None or pwd == None or repwd == None or\ email == None or cmp(i.pwd, i.repwd) != 0: return render.register() seq_id = db.insert('tuser', name=name, pwd=pwd, email=email) t = threading.Thread(target=thread_send_mail, args=(email,)) t.start() return render.login()
这里对俺来说有个小注意点,threading.Thread函数中的args里面的email后面要加个逗号,原因未知,估计是tuple的吧!不懂啊。。。没好好学python的后果>_<
转载请注明: 转载自http://jyd.me/
本文链接地址: 第四天:注册和邮件通知
- 第三天:cookie和session
- vim常用操作快捷键