簡體   English   中英

NameError:名稱“ MainPage”未定義python-2.7

[英]NameError: name 'MainPage' is not defined python-2.7

我正在嘗試完成一個練習以使用python 2.7了解有關Google Appengine的更多信息

到目前為止,我的main.py文件中已有此代碼,但是當我嘗試通過本地主機訪問它時,出現以下錯誤消息:NameError:未定義名稱“ MainPage”

我找不到錯誤的出處,對此方面的任何幫助對我來說都是新事物,對此我將不勝感激。

import webapp2
import jinja2
from google.appengine.api import users
from google.appengine.ext import ndb

import os

from myuser import MyUser

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

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/html'

        url = ''
        url_string = ''
        welcome = 'Welcome back'
        myuser = None

        user = users.get_current_user()

        if user:
            url = users.create_logout_url(self.request.uri)
            url_string = 'logout'

            myuser_key = ndb.Key('MyUser', user.user_id())
            myuser = myuser_key.get()

            if myuser == None:
                welcome = 'Welcome to the application'
                myuser = MyUser(id=user.user_id())
                myuser.put()
        else:
            url = users.create_login_url(self.request.uri)
            url_string = 'login'

        template_values = {
            'url' : url,
            'url_string' : url_string,
            'user' : user,
            'welcome' : welcome,
            'myuser' : muyser
        }

        template = JINJA_ENVIRONMENT.get_templaet('main.html')
        self.response.write(template.render(template_values))

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

    def post(self):
        self.response.header['Content-Type'] = 'text/html'

        user = users.get_current_user()
        myuser_key = ndb.Key('MyUser', user.user_id())

        myuser = myuser_key.get()

        myuser.name = self.request.get('users_name')
        myuser.age = int(self.request.get('users_age'))
        myuser.put()

       self.redirect('/')

一個更簡單的示例,一個類變量不能引用該類本身

class Foo:
  x = Foo()

  def bar(self):
    pass

運行它

Traceback (most recent call last):
  File "python", line 1, in <module>
  File "python", line 2, in Foo
NameError: name 'Foo' is not defined

您在MainPage類中的get()post()之間定義了app 上課后移開

class MainPage(webapp2.RequestHandler):
    def get(self):
        pass  # Fill this back in 

    def post(self):
        pass  # Fill this back in 


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

我可能還會建議您為HTTP路由使用一個單獨的模塊,並將此主腳本保持在最小限度,以僅設置該應用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM