我遵循了第一个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)
答案 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
方法,使其与其他两个方法处于同一级别。)