1

我的根目录的子目录“static”中有一个 html 文件“listagem.html”。我想使用“listagem.html”作为 jinja2 的模板。

我尝试了这 3 个连接公式:

第一的:

jinja_environment = jinja2.Environment(
    autoescape = True, 
    loader =  jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'static')))

第二:

jinja_environment = jinja2.Environment(
    autoescape = True, 
    loader =  jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'static/')))

第三:

jinja_environment = jinja2.Environment(
    loader = jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), '/static')))
        template = jinja_environment.get_template('listagem.html')
        self.response.out.write(template.render(template_values)) 

并收到此错误:

file not accessible: 'C:\\Users\\Me\\AppEngine\\MyAppRoot\\static\\listagem.html'

我究竟做错了什么?

坦克寻求帮助。

4

2 回答 2

5

您可能已经static_dir在文件中添加了一个 url 处理程序,app.yaml并将您static的目录(模板所在的位置)设置为static_dir.

这会使您的文件无法访问,因为静态文件在应用程序的文件系统中不可用

static_dir从文件中删除app.yaml并在您的项目文件夹中添加一个静态模板文件夹。

创建一个jinja环境如下:

jinja_environment = jinja2.Environment(autoescape=True,
    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'static')))
于 2012-08-24T23:41:26.340 回答
0

you have a mistake. 1. in your appengine config file, you need same code like that:

application: yourapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico
- url: /js
  static_dir: static/js
- url: /css
  static_dir: static/css
- url: /img
  static_dir: static/img  
- url: .*
  script: main.app

libraries:
- name: webapp2
  version: latest
- name: jinja2
  version: latest

look that "- url items"... this is for your static content( js css img ) for your html template, you need a subfolder template son of your root-app, in my case is myapp/template and inside put your template( templates content, html )

your main app look like that. main.py

import os
import webapp2
import jinja2

jinja_environment = jinja2.Environment(autoescape=True,
    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates')))

class MainHandler(webapp2.RequestHandler):
    def get(self):
        template_values = {
            'name': 'nombre',
            'verb': 'programando'
        }

        template = jinja_environment.get_template('index.html')
        self.response.out.write(template.render(template_values))    

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)
于 2014-04-19T16:28:20.783 回答