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>



原文地址:https://www.cnblogs.com/stubborn-dude/p/14314653.html