使用内置的WSGI服务器,这里是相关的HTML:
form style="display: inline;" action="/forum?id=2&page=5">
<input type="submit" value="Forum"/></form>
以下是我申请的路线:
@rolodex.route('/forum')
def display_forum():
forum_id = bottle.request.query.id
page = bottle.request.query.page or '1'
return 'Forum ID: %s (page %s)' % (forum_id, page)
这是我点击“论坛”按钮时得到的结果:
论坛ID :(第1页)
关于我可能做错的任何想法?这基本上就是文档中的示例:
bottlepy.org/docs/0.11/tutorial.html#request-data
答案 0 :(得分:1)
表单操作中的查询字符串可能正在与请求进行交互。制作id
和page
正确的表单字段后会发生什么?像这样:
<form action="/forum">
<input type="text" name="id" value="2"/>
<input type="text" name="page" value="5"/>
<input type="submit" value="Forum"/>
</form>
(或者,当您直接使用浏览器点击它时?例如,http://yourserver/forum?id=2&page=5
)
答案 1 :(得分:0)
我发现的所有相关文档都很模糊,但似乎大多数浏览器都不会处理和提交附加到&lt; form&gt;的查询字符串。动作。执行此操作的正确方法是将查询参数作为隐藏文本字段包含在&lt; form&gt;的正文中。容器。所以不要这样:
<form style="display: inline;" action="/forum?id=2&page=5">
<input type="submit" value="Edit"/></form>
这样做:
<form style="display: inline;" action="/forum">
<input type="hidden" name="id" value="2"/>
<input type="hidden" name="page" value="5"/>
<input type="submit" value="Edit"/>
</form>
HTML规范声明表单操作必须是HTTP URI,URI的定义确实包含查询字符串的可能性;但是,如果没有别的,当使用隐藏输入的选项是一个更清晰,更不模糊的解决方案时,在表单操作中包含查询字符串变量应该被认为是不好的形式。
此外,正如Ron Rothman在另一个答案中指出的那样,没有理由使用&lt; form&gt;在这种情况下 - 只需使用具有适当href的链接:
<a class="button" href="/forum?id=2&page=5">Edit</a>
使用这个CSS(或类似的东西):
.button {font-size: small;
font-family: Verdana, Arial, sans-serif;
text-decoration: none;
background-color: #DDDDDD;
color: #222222;
padding: 1px 12px 1px 12px;
border-radius:7px;
border-top: 1px solid #CCCCCC;
border-right: 1px solid #333333;
border-bottom: 1px solid #333333;
border-left: 1px solid #CCCCCC;}