zoukankan      html  css  js  c++  java
  • 简单的登录和注册


    ##导入模块:
    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
  • 相关阅读:
    bzoj5137 [Usaco2017 Dec]Standing Out from the Herd
    bzoj2434 [Noi2011]阿狸的打字机
    【20181024T2】小C的序列【GCD性质+链表】
    【20181024T3】小C的宿舍【分治】
    【20181024T1】小C的数组【二分+dp】
    【20181023T2】行星通道计划【二维BIT】
    【20181023T1】战争【反向并查集】
    【20181020T1】蛋糕
    【20181019T2】硬币【矩阵快速幂优化DP】
    【20181019T3】比特战争【最小生成树思想】
  • 原文地址:https://www.cnblogs.com/lajiao/p/7784499.html
Copyright © 2011-2022 走看看