-1

みんな :) 私は "http://key.xxxxxx.org:10093/?q=" のように検索できるデータベースを持っています URL にキーワードを入力すると (= マークの後ろ)、多くの json データを表示できます。

ここで、GAE で webapp2 を使用する単純な webapp を作成します。/search ページでキーワードを入力すると、/result ページの jsondata コンテンツを解析できます。コードの私の部分は次のとおりです。

# -*- coding: utf-8 -*-

import os
import re
import httplib
import json
import urllib
from string import letters

import webapp2
import jinja2

template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
                               autoescape = True)

def render_str(template, **params):
    t = jinja_env.get_template(template)
    return t.render(params)

def renderJson(query):
    conn = httplib.HTTPConnection('xxx.xxxxx.org:10093')
    conn.request('GET', '/?q=%s' % urllib.quote_plus(query))
    res = conn.getresponse()
    data = res.read()
    j = json.loads(data)
    results = []
    result = j['data']['group'][0]['resultitem']
    for l in result:
        for k,v in l.items():
            if k == 'word':
                results.append(l[k])
    return results

class BaseHandler(webapp2.RequestHandler):
    def render(self, template, **kw):
        self.response.out.write(render_str(template, **kw))

    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)

class Search(BaseHandler):
    def get(self):
        self.render("search.html")

    def post(self):
        q = self.request.get('query')
        if q:
            self.redirect('/result/?q='+query)


class Result(BaseHandler):
    def get(self):
        q = self.request.get('query')
        self.render('result.html', query = q, result = renderJson(q))

app = webapp2.WSGIApplication([
                               ('/search', Search),
                               ('/result', Result)
                               ],
                              debug=True)

search.htmlに、私は書きました

<input type="text" name="q" value="{{query}}"></input>

そしてresult.htmlで

<p>{{result}}</p>
4

1 に答える 1

0

URLからパラメータを取得するには、次を使用する必要があります。

q = self.request.get('query')

入門ガイドwebapp の改善されたドキュメントを参照してください。

次に、そのパラメーターをrenderJsonasrenderJson(q)に渡します。またrenderJson 、2 行目では、最初にクエリ文字列を引用する必要があります (q 引数を渡します)。

conn.request('GET', '/?q=%s' % urllib.quote(query))

最後に、最終的な出力をレンダリングするには、入門ガイドをお読みください。

于 2012-08-16T07:29:55.163 に答える