(Bottle) SqLite 的下拉列表

Dropdown List from (Bottle) SqLite

我正在尝试使用 python 3.4 和 Bottle 开发我的第一个网络应用程序。

我正在尝试使用 table 收集的 "Documenti" 中的数据创建一个下拉列表(使用 sqlite) 使用的 table 只有两列:ID_D (id) 和 Documents (文档名称)。 My need is that when a value is choosed, and the botton "search" cliked, Bottle opens a new page, using the ID_D value from the first table and printing info from a second table (colled "Master") 还有一列 colled ID_D.

我正在尝试使用这些代码来做到这一点:

带有下拉列表的第一页(使用第一个 table)

@route('/doc')
def Document():
    conn = sqlite3.connect('db.db')
    c = conn.cursor()
    result = c.execute("SELECT ID_D FROM documenti;").fetchall()
    c.close()
    output = template('doc', rows=result)
    return output

第二页,使用上一页的 ID_D 打开以打印第二页的信息 table

@route('/docx', method='GET')
def docx():
    if request.GET.get('search','').strip():
        id = request.GET.get('docx', '').strip()
        conn = sqlite3.connect('db.db')
        c = conn.cursor()
        c.execute("SELECT * FROM master WHERE ID_D LIKE ?;" (id))
        result = c.fetchall()
        c.close()
        output = template('doc3', rows=result)
        return output

这是我使用的 html 代码...

在带有下拉列表的页面中:

<form action="/docx" method="GET">
<select name="docx"><option selected="selected" value="">Seleziona</option>
%for row in rows:
    <option value="{{row}}">{{row}}</option>
%end
</select>
<input type="submit" name="search" value="search">

在第二页(我不会看到第二页的信息 table 用作过滤器 ID_D:

<table border="1">
%for row in rows:
  <tr>
  %for col in row:
    <td>{{col}}</td>
  %end
  </tr>
%end
</table>

我的代码不起作用...第二页是空白...

感谢大家的帮助! 毛罗

编辑: 对于每个人...这是我的工作代码:

@route('/docx', method='GET')
def docx():
    id = request.GET.get('docx', '').strip()
    conn = sqlite3.connect('db.db')
    c = conn.cursor()
    result = c.execute("SELECT * FROM master WHERE ID_D LIKE (?)", (id,)).fetchall()
    c.close()
    output = template('doc3', rows=result)
    return output

感谢大家!

我认为 if request.GET.get('search','').strip(): 正在评估 False,因此您的视图返回 None,这是 Python 中的默认行为。这是有道理的,因为 submit 按钮不包含在查询字符串中。我会试试这个:

@route('/docx', method='GET')
def docx():
    id = request.GET.get('docx', '').strip()
    conn = sqlite3.connect('db.db')
    c = conn.cursor()
    c.execute("SELECT * FROM master WHERE ID_D LIKE ?;" (id))
    result = c.fetchall()
    c.close()
    output = template('doc3', rows=result)
    return output

如果它仍然不起作用,我会尝试右键单击该页面(在浏览器中打开时)并选择 View Source,如果您看到类似这样的内容,您应该会看到一个空白页面:

<table border="1">
</table>

则SQL查询错误