zoukankan      html  css  js  c++  java
  • Python的第一个web项目demo

    copy了一个网上简单的python工程。
    参照网址:https://jishuin.proginn.com/p/763bfbd2432b
    工具PyCharm.
    安装Python3.
    安装sqlite3,创建数据库todo.db,创建todo表:

    CREATE TABLE todo(
       id integer PRIMARY KEY autoincrement,
       task CHAR(50) NOT NULL,
       status CHAR(50) NOT NULL
    );
    


    Python引入bottle包--web框架。

    重新敬上代码

    todolist.py

    import sqlite3
    from bottle import route, run, template, request, error
    
    
    @route('/todo')
    def todo_list():
        conn = sqlite3.connect('todo.db')
        c = conn.cursor()
        c.execute("SELECT id, task FROM todo WHERE status LIKE '1'")
        result = c.fetchall()
        c.close()
        output = template('make_table', rows=result)
        return output
    
    
    @route('/new', method='GET')
    def new_task():
        if request.GET.save:
    
            new = request.GET.task.strip()
            conn = sqlite3.connect('todo.db')
            c = conn.cursor()
    
            c.execute("INSERT INTO todo (task,status) VALUES (?,?)", (new, 1))
            new_id = c.lastrowid
    
            conn.commit()
            c.close()
    
            return '<p>成功添加数据, ID 为: %s</p>' % new_id
    
        else:
            return template('new_task.tpl')
    
    @route('/edit/<no:int>', method='GET')
    def edit_item(no):
    
        if request.GET.save:
            edit = request.GET.task.strip()
            status = request.GET.status.strip()
    
            if status == 'open':
                status = 1
            else:
                status = 0
    
            conn = sqlite3.connect('todo.db')
            c = conn.cursor()
            c.execute("UPDATE todo SET task = ?, status = ? WHERE id LIKE ?", (edit, status, no))
            conn.commit()
    
            return '<p>成功提交计划 id:%s </p>' % no
        else:
            conn = sqlite3.connect('todo.db')
            c = conn.cursor()
            c.execute("SELECT task FROM todo WHERE id LIKE ?", (str(no),))
            cur_data = c.fetchone()
    
            return template('edit_task', old=cur_data, no=no)
    
    @route('/json<json:re:[0-9]+>')
    def show_json(json):
        conn = sqlite3.connect('todo.db')
        c = conn.cursor()
        c.execute("SELECT task FROM todo WHERE id LIKE ?", (json,))
        result = c.fetchall()
        c.close()
    
        if not result:
            return {'task': 'This item number does not exist!'}
        else:
            return {'task': result[0]} # 中文乱码可以使用 json 库解决:json.dumps(result,ensure_ascii=False)
    
    
    @error(404)
    def mistake404(code):
        return 'Sorry, 你要找的网页被狗子吃了哦!!'
    
    run(reload=True, host='localhost', port=8888)
    

    new_task.tpl

    <p>添加一个你接下来要做的计划:</p>
    <form action="/new" method="GET">
      <input type="text" size="100" maxlength="100" name="task">
      <input type="submit" name="save" value="提交">
    </form>
    

    make_table.tpl

    <p>这是你接下来要做的事情:</p>
    <table border="1">
    %for row in rows:
      <tr>
      %for col in row:
        <td>{{col}}</td>
      %end
      </tr>
    %end
    </table>
    

    edit_task.tpl

    <p>编辑计划  ID = {{no}}</p>
    <form action="/edit/{{no}}" method="get">
      <input type="text" name="task" value="{{old[0]}}" size="100" maxlength="100">
      <select name="status">
        <option>未完成</option>
        <option>已完成</option>
      </select>
      <br>
      <input type="submit" name="save" value="提交">
    </form>
    



  • 相关阅读:
    HDOJ 5294 Tricks Device 最短路(记录路径)+最小割
    国家人工智能(AI)的美好前景
    预防埃博拉病毒感染的试验疫苗投入人体试验
    MySQL同步复制搭建方法指南详细步骤
    正则表达式,用相反的方式过滤掉特殊字符
    Linux入门教程
    Linux:-bash: ***: command not found
    linux命令大全
    linux下打开、关闭tomcat,实时查看tomcat运行日志
    chmod u+x ./j2sdk-1_4_2_04-linux-i586.bin的含义
  • 原文地址:https://www.cnblogs.com/stubborn-dude/p/14314653.html
Copyright © 2011-2022 走看看