代码遍历html模板并直接返回python

代码遍历html模板并直接返回python,python,html,Python,Html,我认为问题出在模板unexpected.html(下文)。python代码工作正常,但是当用户提供一个数字然后单击submit按钮时,python代码接受该值,并且无论采用if子句的哪个分支,浏览器中的结果视图是python代码底部的unexpected.html和嵌入的html 为什么浏览器不停止使用unexpected.html模板 下面首先是python代码 class MainPage(BaseHandler): def get(self): self.render_t

我认为问题出在模板
unexpected.html
(下文)。python代码工作正常,但是当用户提供一个
数字
然后单击submit按钮时,python代码接受该值,并且无论采用
if
子句的哪个分支,浏览器中的结果视图是python代码底部的
unexpected.html
和嵌入的html

为什么浏览器不停止使用
unexpected.html
模板

下面首先是python代码

class MainPage(BaseHandler):

    def get(self):
    self.render_template('index.html', { })

    def post(self):
    number = self.request.get('number')
    hiddennumber = self.request.get('hiddennumber')
    for i in ["a"]:
        if int(number) < int(hiddennumber):
        reason='< was in that time slot already: '
        trans = Trans(key_name='reason')
        trans.reason=reason
        trans.name=number
        trans.put()
        template_values = {'trans':trans}
        path = os.path.join(TEMPLATE_DIR, 'unexpected.html')
        self.response.out.write(template.render(path, template_values))
        elif int(number) > int(hiddennumber):
        reason='> was in that time slot already: '
        trans = Trans(key_name='reason')
        trans.reason=reason
        trans.name=number
        trans.put()
        template_values = {'trans':trans}
        path = os.path.join(TEMPLATE_DIR, 'unexpected.html')
        self.response.out.write(template.render(path, template_values))
        else:
        pass
    self.response.out.write('''
        <html>
          <body>
            <form method="post">
              <p>Name: <input type="text" name="name" /></p>
              <p>Favorite foods:</p>
              <select name="favorite_foods" multiple size="4">
                <option value="apples">Apples</option>
                <option value="bananas">Bananas</option>
                <option value="carrots">Carrots</option>
                <option value="durians">Durians</option>
              </select>
              <p>Birth year: <input type="text" name="birth_year" /></p>
              <p><input type="submit" /></p>
            </form>
          </body>
        </html>
        ''')

class Unexpected(BaseHandler):

    def get(self):
        trans=Trans.get_by_key_name('reason')
        template_values = {'trans':trans}
        path = os.path.join(TEMPLATE_DIR, 'unexpected.html')
        self.response.out.write(template.render(path, template_values))

    def post(self):
        day=self.request.get('day')
        return webapp2.redirect("/")

app = webapp2.WSGIApplication([
        ('/', MainPage), 
        ('/unexpected', Unexpected)
        ],
        debug=True)
最后,为了更完整,我加入了
index.html

{% extends "base.html" %}
{% block content %}
<center>
   </h1>
  </center>
<form action="" method="post">
<input type="hidden" name="hiddennumber"  value="10">
<label>Location/Venue name (no spaces and case counts)</label>
<input type="textbox" name="number" size="30" value=""></input><br/>
  <input type="submit" value=submit />
</form>


{% endblock content %}
{%extends“base.html”%}
{%block content%}
地点/场馆名称(无空间和案例计数)

{%endblock内容%}
在我所看到的执行流程中,没有任何地方可以突破,而嵌入的HTML将在测试之后出现,因此没有理由不执行。最快的解决方案就是在完成后返回:

self.response.out.write(template.render(path, template_values))
return
...
一般来说,该结构中也有很多重复的逻辑:应该合并这些逻辑,然后通过使该结构更像一个调度器,在单独的函数中使用适当的显示逻辑,进一步重构代码,使其更具可读性

self.response.out.write(template.render(path, template_values))
return
...