第四天:注册和邮件通知

本文摘要:注册模块以及多线程发送邮件通知

上次写了登录验证,所以这次就继续写注册。

注册的关键是往数据库中插入注册信息。

数据库是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/

本文链接地址: 第四天:注册和邮件通知

Tagged on: , ,

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据