0

私はweb2py/pythonを理解しようとしています。ユーザーに検索フォームに入力してもらいたいのですが、検索した用語がPythonスクリプトに送信されます。このスクリプトは、クエリをblekko APIに送信し、結果を新しいHTMLページに出力します。次のコードを実装しましたが、通常のインデックスページが表示される代わりに、検索バーに「%(query)」/htmlが表示されたblekkoから直接html応答を取得しています。本当にこれでいくつかの助けが必要です!

default/index.htmlページのHTMLフォーム

<body>

<div id="MainArea">
  <p align="center">MY SEARCH ENGINE</p>
  <form name="form1" method="get" action="">
    <label for="SearchBar"></label>
    <div align="center">
      <input name="SearchBar" type="text" id="SearchBar" value="" size = "100px"><br />
      <input name="submit" type="submit" value="Search">
    </div>
  </form>
  <p align="center">&nbsp;</p>

default.pyコントローラーのPythonコード

import urllib2

def index():
    import urllib2


    address = "http://www.blekko.com/?q='%(query)'+/html&auth=<mykey>"
    query = request.vars.query

    response = urllib2.urlopen(address)

    html=response.read()
    return html
4

3 に答える 3

1

文字列の書式設定がどのように機能するかを誤解していると思います。あなたはまだアドレスとクエリを一緒にする必要があります:

address = "http://www.blekko.com/?q='%(query)s'+/html&auth=<mykey>" % dict(query=request.vars.query)
于 2012-07-03T13:09:48.423 に答える
1

フォームに非表示フィールドを追加し、「送信済み」と呼びます。次に、コントローラー関数を次のように再フォーマットします。

import urllib2

def index():
    if request.vars.submitted:
        address = "http://www.blekko.com/?q='%(query)'+/html&auth=<mykey>"
        query = request.vars.query
        response = urllib2.urlopen(address)
        html=response.read()
        return html
    else:
        return dict()

フォームが送信され、ページが「送信された」フォーム変数を受け取っていない限り、これによりインデックスページが表示されます。

于 2012-07-03T21:13:36.970 に答える
1

/htmlは何もしません。あなたの質問が答えられてうれしいです。blekko検索APIのPythonクライアントコードはここにあります:https ://github.com/sampsyo/python-blekko

于 2012-07-05T04:48:50.340 に答える