提交对text-python文本的任何更新

时间:2016-12-11 21:53:25

标签: jquery python html jinja2

我是python和web编程的新手。我在app引擎中有一些工作的html和python代码,使用jinja2和webapp2库,根据用户输入文本框然后点击提交返回查询结果。我想更改我的代码,以便每当文本框更新并且不需要提交按钮时,我的POST代码就会运行。任何代码示例或如何实现此目的的指导将不胜感激。

我的HTML主体

<body>
<div class="container">
  <form action="/" method="post">
    <div><input type="text" name="content" class="input-block-level" rows="1" value="{{ textInput }}"></textarea></div>
    <div><input type="submit" class="btn btn-large btn-primary" value="Submit"></div>
    <div><label>Query Time(ms): </label><label>{{ queryTime }}</label></label></div>

  </form>
  {% for product in products %}
  <div class="row">
  <blockquote>{{ product }}</blockquote>
  </div>
  {% endfor %}

我的Python主页包含get和post

class MainPage(webapp2.RequestHandler):

def get(self):
    template = JINJA_ENVIRONMENT.get_template('index.html')
    textInput = ""
    products = ""
    queryTime = 0
    template_values = {
        'products': products,
        'textInput': textInput,
        'queryTime': queryTime,
    }

    self.response.write(template.render(template_values))

def post(self):
    textInput = self.request.get('content').lower()
    template = JINJA_ENVIRONMENT.get_template('index.html')

    t1= time.time()
    product_query = ndb.gql("SELECT * FROM Product where name >= :1 LIMIT 5",textInput)
    results = product_query.fetch(5)
    t2= time.time()

    products = []

    for counter, names in enumerate(results):
        if counter == 0:
            if not names.name.lower().startswith(textInput.lower()):
                products.append("No Matches")
        if names.name.startswith(textInput.lower()):
            products.append(names.name) 


    queryTime = (t2 - t1) * 1000

    template_values = {
        'products': products,
        'textInput': textInput,
        'queryTime': queryTime,
    }

    self.response.write(template.render(template_values))

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

1 个答案:

答案 0 :(得分:1)

您应该使用 onkeyup事件作为输入,向您的 ajax webapp2处理程序进行ajax调用