我是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)
答案 0 :(得分:1)
您应该使用 onkeyup事件作为输入,向您的 ajax webapp2处理程序进行ajax调用。