我尝试将输入(文本)字段添加到工作示例(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我没有任何线索,所以我不确定从这里尝试什么。
答案 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, "")