美文网首页PythonPython Web大数据 爬虫Python AI Sql
用python web框架 bottle 开发网站(二)

用python web框架 bottle 开发网站(二)

作者: firewt | 来源:发表于2018-04-03 12:06 被阅读190次

    第一节我们了解了bottle框架的基本使用,并写出了一个简单的hello欢迎页面,接下来我们用bottle实现及其简单的欢迎页面。

    # main.py
    from bottle import run,route,template
    @route("/<name>")
    def index(name):
        return template('index',username = name)
    run(host = 'localhost', port = 80, debug = True, reloader = True)
    

    在main.py目录下建立views目录,然后在views目录中建立index.tpl文件,编辑index.tpl文件如下:

    <!doctype html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Index Page</title>
      </head>
      <body>
      <h1>index page</h1>
      </body>
      %if username == None or username == '':
        <h2>welcome</h2>
      %else:
        <h2>welcome {{username}}</h2>
      %end
    </html>
    

    其中index.tpl是bottle的自带模板引擎会render的文件,如果未明确指定路径,则bottle的template会在views文件夹中寻找相关文件.
    @route('/<name>')是bottle的动态路由,一个简单的动态路由使用<>将动态参数名字括起来.
    run选项中的debug = True, reloader = True表示打开debug状态,便于调试,reloader则表示文件如果有修改则自动重启服务器,实现热更新。

    运行服务器后,我们访问http://127.0.0.1/Jianshu,则会显示

    image.png
    这样就可以根据get参数传入的用户名来动态显示欢迎页面. image.png

    但是一个欢迎页面是显示的欢迎用户名一般都是网站的注册用户,以上的实现只是了解bottle的动态路由用法,欢迎页面应该显示登录用户的用户名,如果未登录,我们要提示登录,总之,没有用户登录注册,用户欢迎页面是一个尴尬的存在。

    接下来,是时候实现用户登录了。

    #main.py (文件名)
    from bottle import run,route,template,request
    
    @route("/login", method = 'get')
    def index():
        return template('login')
    
    @route('/login', method = 'post')
    def index():
        username = request.forms.get('username')
        password = request.forms.get('password')
        if username == 'admin' and password == 'root' :
            return f'欢迎 {username}'
        return '账号密码错误'
        
    run(host = 'localhost', port = 80, debug = True, reloader = True)
    
    <!-- login.tpl(文件名) -->
    <!doctype html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Login Page</title>
      </head>
      <body>
      <h1>Login Page</h1>
      <form method = 'post' action = './login'>
      Username:<input type = 'text' name = 'username'>
      <br />
      Password:<input type = 'password' name = 'password'>
      <button>提交</button>
      </form>
      </body>
    </html>
    

    这样,当我们访问http://127.0.0.1/login时,会弹出一个认证页面。

    image.png

    只有账号密码都正确的时候,才会弹出到欢迎页面

    image.png
    login.tpl有一个表单(form),它通过post方法,向http://127.0.0.1/login传递一个表单数据,main.py则通过requests.forms.get(表单name属性)来获取这个数据,然后通过校验,判断是否允许登录。

    但是目前还是不能算一个基础功能完善的登录系统,因为,你不能把账户和密码硬编码到代码中,这样即不方便也没有多大的意义。

    下一节,我们要用文本文档(或者轻量级数据库sqlite3)实现保存用户名和密码和加密,以便多用户使用。

    极简框架之所以比较容易入门,就是因为一些东西比较简短,能很快明白其中的意思。

    相关文章

      网友评论

      本文标题:用python web框架 bottle 开发网站(二)

      本文链接:https://www.haomeiwen.com/subject/zllqhftx.html