index.py
#coding=utf-8
import web
import datetime
from web import form
web.config.debug = False
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
urls=('/','Index',
'/reg','Reg',
'/login','Login',
'/logout','Logout',
'/showusers','Showusers',
)
app=web.application(urls,globals())
render = web.template.render('templates',base='base')
session = web.session.Session(app, web.session.DiskStore('sessions'),initializer={'login':0,})
db1=web.database(dbn='mysql',
db='ideploy1',
user='ideploy1',
host='10.13.38.43',
pw='123456',
port=3306,)
###首页
class Index:
def GET(self):
#return web.ctx.ip
return datetime.datetime.now().strftime('%Y%m%d%H%M%S%S')
###注册页
class Reg:
vusername= form.regexp(r".{3,20}$", '用户名长度为3-20位')
vpass = form.regexp(r".{6,20}$", '密码长度为6-20位')
vemail = form.regexp(r".*@.*", "must be a valid email address")
regForm=web.form.Form(
form.Textbox('username',vusername,description=u'用户名'),
form.Password("password",vpass,description=u"密码"),
form.Password("password2", description=u"确认密码"),
form.Button(u"马上注册", type="submit", description="submit"),
validators = [
form.Validator("两次输入的密码不一致", lambda i: i.password == i.password2)]
)
def GET(self):
return render.reg(self.regForm)
def POST(self):
formdata=web.input();
username=web.net.websafe(formdata.username)
password=web.net.websafe(formdata.password)
regip=web.ctx.ip
regdate=datetime.datetime.now().strftime('%Y%m%d%H%M%S')
if not self.regForm.validates():
return render.reg(self.regForm)
#判断用户名是否存在:
else:
if len(getUserByUserName(username))>0:
return render.reg(self.regForm,u'用户名已存在')
else:
ret=addUser(username,password,regip,regdate)
if ret==0:
#return u'注册成功'
raise web.seeother('/showusers')
else:
return u'注册失败'
###登陆页面
class Login:
loginForm=form.Form(form.Textbox('username',description=u'用户名'),
form.Password("password",description=u"密码"),
form.Button(u"马上登陆", type="submit", description="submit"),)
def GET(self):
if logged():
return 'you are logged'
else:
return render.login(self.loginForm)
def POST(self):
postdata=web.input()
username=web.net.websafe(postdata.username)
password=web.net.websafe(postdata.password)
rslist=getUserByUserName(username)
if len(rslist)==0:
return render.login(self.loginForm,'用户名不存在')
else:
if password==rslist[0].password:
session.login=1
#session.login222=1
return '登陆成功,欢迎你:'+username+':'+str(session.login222)
else:
return render.login(self.loginForm,'用户名及密码不匹配')
###注销登陆页面
class Logout:
def GET(self):
session.login=0
session.kill()
return '注销成功'
###显示用户列表
class Showusers:
def GET(self):
if logged():
usersList=getUsers()
return render.users(usersList)
else:
return '对不起 您没有登陆无权查看'
###判断用户是否登陆
def logged():
if session.login==1:
return True
else:
return False
################################################ 数据库操作部分 begin ############################################################
#增加用户
def addUser(username,password,regdate,regip,isactive='0'):
ret=db1.insert('t_user',username=username ,password=password,regdate=regdate,regip=regip,isactive=isactive)
return ret
#获取用户列表
def getUsers(limit=10000,orderby='regdate'):
rs=db1.select('t_user',limit=limit,order=orderby)
rslist=[]
for r in rs:
rslist.append(r)
return rslist
#根据用户名查询用户信息
def getUserByUserName(username):
rs=db1.select('t_user',where='username="'+username+'"')
rslist=[]
for r in rs:
rslist.append(r)
return rslist
################################################ 数据库操作部分 end ############################################################
if __name__=="__main__":
app.run()
base.html
$def with (page)
hello worldusers.htm
$def with (users)
用户名 | 密码 |
$for i in users:
$i.username$i.password$i.regip$i.regdatereg.htm
$def with(form,message='')
$:message
$:form.render()
login.htm
$def with(form,message='')
$:message
$:form.render()