不能以webapp2形式包含多个输入

时间:2018-07-22 06:06:22

标签: python html5 webapp2

我尝试将输入(文本)字段添加到工作示例(https://realpython.com/python-web-applications/)中,但它坏了。我的Python代码是:

import webapp2

def convert_temp(cel_temp):
    if cel_temp == "":
        return ""
    try:
        far_temp = float(cel_temp) * 9 / 5 + 32
        far_temp = round(far_temp, 3)  # round to three decimal places
        return str(far_temp)
    except ValueError:  # user entered non-numeric temperature
        return "invalid input"

class MainPage(webapp2.RequestHandler):
    def get(self):
        cel_temp = self.request.get("cel_temp")
        far_temp = convert_temp(cel_temp)
        self.response.headers["Content-Type"] = "text/html"
        self.response.write("""
        <html>
        <head><title>Temperature Converter</title></head>
        <body>
          <form action="/" method="get">
            <fieldset>
            Celsius temperature: <input type="text" name="cel_temp" value={}><br>
            Dummy: <input type="text" name="dummy" value={}>                        
            <input type="submit" value="Convert"><br>
            Fahrenheit temperature: {}
            </fieldset>
          </form>
        </body>
      </html>""".format(cel_temp, far_temp))

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

新行以“ Dummy”开头。该代码一直有效,直到我将其放入为止,现在它引发内部服务器错误。通过查看HTML doco我没有任何线索,所以我不确定从这里尝试什么。

1 个答案:

答案 0 :(得分:0)

这是因为format的工作方式。您需要在末尾提供正确数量的参数,以使所有{}与每个参数匹配。我没有对其进行测试,但这应该可行,请注意将空字符串作为第三个参数,该参数应与第三个{}相匹配:

  self.response.write("""
        <html>
        <head><title>Temperature Converter</title></head>
        <body>
          <form action="/" method="get">
            <fieldset>
            Celsius temperature: <input type="text" name="cel_temp" value={}><br>
            Dummy: <input type="text" name="dummy" value={}>                        
            <input type="submit" value="Convert"><br>
            Fahrenheit temperature: {}
            </fieldset>
          </form>
        </body>
      </html>""".format(cel_temp, far_temp, "")