Python 名称错误:全局名称';q';没有定义

Python 名称错误:全局名称';q';没有定义,python,google-app-engine,Python,Google App Engine,在下面的链接中,我可以在google应用程序引擎中运行Hello World程序 但是在我修改了main.py文件的代码(尝试新的处理程序)之后,我得到了以下错误 Traceback (most recent call last): File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1535, in __call__ rv = self.handle_exception(request,

在下面的链接中,我可以在google应用程序引擎中运行Hello World程序

但是在我修改了main.py文件的代码(尝试新的处理程序)之后,我得到了以下错误

Traceback (most recent call last):
  File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1535, in __call__
    rv = self.handle_exception(request, response, e)
  File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1529, in __call__
    rv = self.router.dispatch(request, response)
  File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/home/natesan/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "/home/natesan/webapps/udacity1/main.py", line 29, in get
    self.request.get(q)
NameError: global name 'q' is not defined
main.py文件如下所示

import webapp2

form="""
<form action="/Testform">
    <input name="q" >
    <input type="submit">
</form>
"""
class TestHandler(webapp2.RequestHandler):
    def get(self):
        self.request.get(q)
        self.response.write(q)

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write(form) 

app = webapp2.WSGIApplication([
    ('/', MainHandler),('/Testform',TestHandler)
], debug=True)
class TestHandler(webapp2.RequestHandler):
    def get(self):
        q=self.request.get("q")
        self.response.write(q)
导入webapp2
form=”“”
"""
类TestHandler(webapp2.RequestHandler):
def get(自我):
self.request.get(q)
自我反应写(q)
类MainHandler(webapp2.RequestHandler):
def get(自我):
self.response.write(表单)
app=webapp2.WSGIApplication([
('/',MainHandler),('/Testform',TestHandler)
],debug=True)

有人能帮我找出错误是什么吗。

你需要用引号写
q
,就像这样:
“q”

如果没有引号,
q
将被视为变量,并且由于您尚未声明它,因此会引发错误

我修改了TestHandler类,如下所示

import webapp2

form="""
<form action="/Testform">
    <input name="q" >
    <input type="submit">
</form>
"""
class TestHandler(webapp2.RequestHandler):
    def get(self):
        self.request.get(q)
        self.response.write(q)

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write(form) 

app = webapp2.WSGIApplication([
    ('/', MainHandler),('/Testform',TestHandler)
], debug=True)
class TestHandler(webapp2.RequestHandler):
    def get(self):
        q=self.request.get("q")
        self.response.write(q)

为变量
q=self.request.get(“q”)
赋值,并用
self.response.write(q)
在浏览器中显示它,您需要用引号
q
,如下所示:
“q”

如果没有引号,
q
将被视为变量,并且由于您尚未声明它,因此会引发错误

我修改了TestHandler类,如下所示

import webapp2

form="""
<form action="/Testform">
    <input name="q" >
    <input type="submit">
</form>
"""
class TestHandler(webapp2.RequestHandler):
    def get(self):
        self.request.get(q)
        self.response.write(q)

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write(form) 

app = webapp2.WSGIApplication([
    ('/', MainHandler),('/Testform',TestHandler)
], debug=True)
class TestHandler(webapp2.RequestHandler):
    def get(self):
        q=self.request.get("q")
        self.response.write(q)

为变量
q=self.request.get(“q”)
指定一个值,并在浏览器中使用
self.response.write(q)

将其显示在Python告诉您的错误中。您在哪里定义了
q
?你在哪一行给了它一个值?:)它不会神奇地知道
q
指的是什么。如果希望将“q”视为字符串,请将其放在双引号中,如
“q”
。编写
“q”
而不是
q
。错误正是Python告诉您的。您在哪里定义了
q
?你在哪一行给了它一个值?:)它不会神奇地知道
q
指的是什么。如果希望将“q”视为字符串,请将其放在双引号中,如
“q”
。写入
“q”
而不是
q
。我的目的是显示我在表单中键入的内容,在名为“q”的变量中获取该内容。我将代码行修改为
q=self.request.get(“q”)
,这样
self.response.write(q)
就可以按照我希望的方式工作。感谢您指出这一点。我的意图是显示我在表单中键入的内容,在名为“q”的变量中获取该内容。我将代码行修改为
q=self.request.get(“q”)
,这样
self.response.write(q)
就可以按照我希望的方式工作。谢谢你指出这一点。