首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebApp2模板不工作

WebApp2模板不工作
EN

Stack Overflow用户
提问于 2017-05-06 07:36:28
回答 1查看 306关注 0票数 0

我正在学习,并且已经开始使用WebApp2框架+ Jinja2模板。

我编写了以下代码:

Main.py

代码语言:javascript
复制
import webapp2
import os
import jinja2
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext import ndb



template_dir = os.path.join(os.path.dirname(__file__), '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 MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello world!')


class PageOne(Handler):
    def get(self):
        self.render('pageone.html')

app = webapp2.WSGIApplication([('/', MainHandler),('/pageone', PageOne)], debug=True)

app.yaml

代码语言:javascript
复制
application: tbapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

- name: jinja2
  version: latest

模板文件夹中也有一个pageone.html HTML文件。

现在,当我运行这些文件时,主页显示的是Hello!但是,当我运行http://localhost:8080/pageone.它返回以下错误。

代码语言:javascript
复制
 File "E:\gae_apps\tbapp\tbapp\main.py", line 50, in get
    self.render('pageone.html')
  File "E:\gae_apps\tbapp\tbapp\main.py", line 40, in render
    self, write(self.render_str(template, **kw))
NameError: global name 'write' is not defined

谁能指点我,做错了什么?我搞不懂。提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-06 07:49:45

正如Amber所指出的,在Handlerrender方法中有一个错误。

替换

代码语言:javascript
复制
def render(self, template, **kw):
    self, write(self.render_str(template, **kw))

使用

代码语言:javascript
复制
def render(self, template, **kw):
    self.write(self.render_str(template, **kw))

错误消息确实给了您一个提示。

NameError: global name 'write' is not defined

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43817978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档