简单的登录和注册


##导入模块:
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()
login.py
# 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>
login.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>
register.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 %}
hello.html

 

posted @ 2017-11-04 20:35  nanaindi  阅读(278)  评论(0编辑  收藏  举报