##导入模块:
import sys
sys.path.append('../modules')
存在modluesa.py
from moudlesa import aa
##导入包(文件夹)
#包下面必须加__init__.py文件,(init里面写的内容可直接作为包加.的属性和方法,大多数情况下为空)
print(aa.__doc__)#可查看包的文档
#三种导入方式
from moudles.moudlesa import aa
from .moudlesa import aa #特别注意这一项,不同目录时需要加
import moudles
#linux数据库root用户不允许远程登录,如要允许,可修改sudo vim mysqld.cnf 设置bin-address=0.0.0.0
#08login.py #coding:utf-8 import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define,options from data.sqlalchemy08 import User,session define('port',default=8000,help='run port',type=int) define('version',default='0.0.1',help='version 0.0.1',type=str) #自定义异常信息: class AuthError(Exception): def __init__(self,msg): super(AuthError,self).__init__(msg) class LoginHandler(tornado.web.RequestHandler): def get(self): self.render('08login.html',error=None) def post(self): username=User.by_name(self.get_argument('name','')) passwd=self.get_argument('passwd','') if username and username[0].passwd == passwd: self.render('08hello.html',username=username[0].username) else: self.render('08login.html',error='登录失败') class IndexHandler(tornado.web.RequestHandler): def get(self): username='no' self.render('08hello.html', username=username,) #注册 class RegisterHandler(tornado.web.RequestHandler): def get(self): self.render('08register.html',error=None) def post(self): if self._check_argument(): try: self._create_user() self.render('08login.html',error='注册成功,请登录:') except AuthError as e: self.render('08register.html',error=e) except Exception as e: self.render('08register.html',error=e) else: self.render('08register.html',error='输入错误!') ## _check_argument_ 加_表示类的私有方法 def _check_argument(self): username=self.get_argument('name','') passwd=self.get_argument('passwd1','') if len(username)<10 and len(passwd)<10: return True else: return False def _create_user(self): if User.by_name(self.get_argument('name','')): raise AuthError('Name is registered') if self.get_argument('passwd1','') != self.get_argument('passwd2',''): raise AuthError('两次输入密码不相同') user=User() user.username=self.get_argument('name','') user.passwd=self.get_argument('passwd1','') session.add(user) session.commit() if __name__ == "__main__": tornado.options.parse_command_line() # print(options.port) app=tornado.web.Application( handlers=[ (r'/login',LoginHandler), (r'/',IndexHandler), (r'/index',IndexHandler), (r'/register',RegisterHandler), ], template_path='templates', static_path='static', debug=True, #autoescape=None, #关闭自动转义 全局的 ) #固定写法: http_server=tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()
# 08login.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> {% if error %} {{error}} {% end %} <form method="post" action="/login" > 用户名</br> <input type="text" name="name" /><br> <input type="text" name="passwd" /><br> <input type="submit" value="提交"> </form> </body> </html>
# 08register.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册</title> </head> <body> {% if error %} {{error}} {% end %} <h1>注册</h1> <form method="post" action="" > 用户名</br> <p><input type="text" name="name" /></p> 密码 <p><input type="text" name="passwd1" /></p> 确认密码 <p><input type="text" name="passwd2" /></p> <input type="submit" value="提交"> </form> </body> </html>
#08hello.html {% extends "./04base.html" %} {% block title %} {{ username }} {% end %} {% block body %} {% if username!='no' %} 欢迎,{{username}} </br> <img src="/static/images/c.jpg" width="250px" height="250px"></br> {% else %} 请登录 <br> {% include "./06include.html" %} </br> <img src="/static/images/c.jpg" width="250px" height="250px"> </br> {% end %} {% end %}