功能&类继承

时间:2015-11-15 19:12:39

标签: python

我遵循了第一个Udacity课程并且相信我已经按照他们的所有说明进行了操作但是收到了错误。

AttributeError: 'MainPage' object has no attribute 'render'    

我的代码如下。在视频中,它适用于他们,但我不明白为什么。在我阅读此代码时,似乎render位于Handler类中,并且我试图在MainPage类中调用它。

为什么它适用于他们而不适合我?

import os
import webapp2
import jinja2

template_dir = os.path.join(os.path.dirname(__file__), 'html_templates')
jinja_env = jinja2.Environment(loader= jinja2.FileSystemLoader(template_dir)) 



class Handler(webapp2.RequestHandler):
  def write(self, *a, **kw):
    self.response.out.write(*a, **kw)

    def render_str(self, template, **params):
      t = jinja_env.get_template(template)
      return t.render(params)

    def render(self, template, **kw):
      self.write(self.render_str(template, **kw))

class MainPage(Handler):
  def get(self):
    self.render("shopping_list.html")

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

1 个答案:

答案 0 :(得分:1)

您的方法myApp.config(function($stateProvider, $urlRouterProvider, $httpProvider) { // CORS $httpProvider.defaults.withCredentials = true; $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; // Ionic uses AngularUI Router which uses the concept of states // Learn more here: https://github.com/angular-ui/ui-router // Set up the various states which the app can be in. // Each state's controller can be found in controllers.js $stateProvider .state('initial', { url: "/initial", templateUrl: 'templates/initial.html', controller: 'initialController' }); }); render_str缩进太多,因此它们位于render方法中。将它们移出,使它们与write处于相同的缩进级别(或者更加缩进def write方法,使其与其他两个方法处于同一级别。)