python:name';自我';没有定义

python:name';自我';没有定义,python,google-app-engine,jinja2,Python,Google App Engine,Jinja2,我用下面的代码得到了title的错误。有人知道如何解决这个问题吗?我已经检查了.py文件上的制表符和空格,甚至尝试更改var的名称,但都没有用。提前谢谢 import os import jinja2 import webapp2 JINJA_ENVIRONMENT = jinja2.Environment( loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), extensions=["jinja2.ext.au

我用下面的代码得到了title的错误。有人知道如何解决这个问题吗?我已经检查了.py文件上的制表符和空格,甚至尝试更改var的名称,但都没有用。提前谢谢

import os
import jinja2
import webapp2

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
    extensions=["jinja2.ext.autoescape"],
    autoescape=True)

class ConsumoHandler(webapp2.RequestHandler):
     def load_input(self):
        self.km=float(self.request.get("edKm","edKm"))
        self.consmed=float(self.request.get("edCons","edCons"))
        self.tiempo=float(self.request.get("edTiempo","edTiempo"))
        self.velMed=0
        self.consTot=0

    def post(self):
        self.load_input()
        self.km=str(self.km)
        self.consmed=str(self.consmed)
        self.tiempo=str(self.tiempo)
        velMed=(self.km)/(self.tiempo)
        self.velMed=str(velMed)
        consTot=(self.km)/((self.consmed)*4)
        self.consTot=str(consTot)

        template_values = { 
        'kmToStr':self.km,
        'consmedToStr':self.consmed,
        'tiempoToStr':self.tiempo,
        'velMedToStr':self.velMed,
        'consTotToStr':self.consTot, 
        }

    template_values = JINJA_ENVIRONMENT.get_template("answer.html")
    self.response.write(template.render(template_values));

app = webapp2.WSGIApplication([
    ('/calcu', ConsumoHandler)
], debug=True)
问题是这一行:

self.response.write(template.render(template_values));
它在类定义中,但不在方法中(第一个参数是
self
。因此这里不知道
self

您必须将其缩进以成为
post
方法的一部分:

def post(self):
    ...
    template_values = { 
        ...
    }

    template_values = JINJA_ENVIRONMENT.get_template("answer.html")
    self.response.write(template.render(template_values));
问题是这一行:

self.response.write(template.render(template_values));
它在类定义中,但不在方法中(第一个参数是
self
。因此这里不知道
self

您必须将其缩进以成为
post
方法的一部分:

def post(self):
    ...
    template_values = { 
        ...
    }

    template_values = JINJA_ENVIRONMENT.get_template("answer.html")
    self.response.write(template.render(template_values));

首先,行
self.response.write(template.render(template_values));
不能在这里的任何函数之外,因为那里没有
'self'
变量

其次,这是一个猜测,基于覆盖
template\u值
变量的事实,您可能希望post方法类似(注意最后两行缩进并更改了变量名称):


首先,行
self.response.write(template.render(template_values));
不能在这里的任何函数之外,因为那里没有
'self'
变量

其次,这是一个猜测,基于覆盖
template\u值
变量的事实,您可能希望post方法类似(注意最后两行缩进并更改了变量名称):


self.response.write(template.render(template_values));
不是在定义类时执行的方法的一部分。可能是缩进混淆了?看起来像是在混合制表符和空格。请重新配置编辑器,使其仅使用空格进行缩进,然后将剩余的空格转换为制表符。问题:为什么(self.response.write(template.render(template_值));)包含尾随分号?除非您希望在同一行上计算多个内容,否则不需要该分号。
self.response.write(template.render(template_值));
不是在定义类时执行的方法的一部分。可能您的缩进混淆了?看起来您是在混合制表符和空格。请重新配置编辑器,使其仅使用空格进行缩进,然后将剩余空格转换为制表符。问:为什么(self.response.write(template.render(template_值));)包含尾随分号?除非您希望在同一行中计算多个内容,否则不需要。回答得很好!他可能打算在post()中同时执行两行代码。也许更新你的答案以说明!@ThelazyScript是的,添加了它。回答得很好!他可能打算在post()中执行两行代码。也许更新你的答案以说明!@ThelazyScript是的,添加了它。