1

ボトルの組み込み 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

4

2 に答える 2

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

于 2013-04-27T01:40:18.133 に答える
0

これについて私が見つけたすべてのドキュメントは非常にあいまいですが、ほとんどのブラウザは <form> アクションに追加されたクエリ文字列を処理および送信しないようです。これを行う正しい方法は、<form> コンテナーの本体に非表示のテキスト フィールドとしてクエリ パラメーターを含めることです。したがって、これの代わりに:

<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 が別の回答で指摘したように、このコンテキストで <form> を使用する理由はまったくありません。適切な 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;}
于 2013-04-30T16:33:27.420 に答える