(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查询错误
我正在尝试使用 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查询错误