2012-06-15 2 views
1

Я работаю над тем, чтобы Jinja2 работал с Google AppEngine. У меня есть следующий мой main.py код:нужна помощь, чтобы получить jinja2 для работы

import os 
import webapp2 
import jinja2 

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

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     template_values = { 
      'name': 'SomeGuy', 
      'verb': 'extremely enjoy' 
     } 

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

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

Это убивает меня в течение нескольких часов я был бы благодарен за некоторую помощь.

UPDATE:

Я изменил код немного обновить ситуацию. Журналы говорят мне:

ImportError: <module 'main' from '/base/data/home/apps/s~devpcg/1.359633215335673018/main.pyc'> has no attribute app 

и вышеприведенный код все из моей папки main.py. У меня есть файл index.html в папке с именем templates, которая находится в том же каталоге, что и файл main.py.

+0

Выглядит хорошо для меня. Вы получаете какие-либо ошибки? Пробовали ли вы использовать GAE? Если да, то как это выглядит? У вас есть jinja2, указанный в вашем 'app.yaml'? Линия 'jinja_environment' просто сообщает jinja, где можно найти каталог шаблонов относительно пути к текущему файлу. Поэтому, если у вас есть этот код в файле 'main.py', вам нужен каталог' templates' на том же уровне, что и файл 'main.py'. – bernie

+0

Вот очень простая - но подтвержденная работа! - приложение, которое может помочь вам представить, как все объединяется: https://bitbucket.org/abernier/anotherday/src. Но ваш код действительно кажется прекрасным. – bernie

+0

это просто дает мне 500 Server Error при развертывании в GAE. и я не получаю никаких других ошибок. – clifgray

ответ

3

Я не был уверен, что это ошибка копипаст при вставке кода к StackOverflow, но вы, кажется, получаю сообщение об ошибке отступа, как показано в комментариях ...
Это правильный отступ:

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     template_values = { 
      'name': 'SomeGuy', 
      'verb': 'extremely enjoy' 
     } 

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

Edit:
на основе новой ошибки я бы порекомендовал вам дать немного больше информации о том, как структурировано ваше приложение.
Я предполагаю, что вы показываете нам свой файл main.py.
Если это действительно так, вам нужно иметь что-то вроде кода ниже в этом файле (предполагая Python 2.7).
Для более гранул деталей, пожалуйста, обратитесь к документации:
https://developers.google.com/appengine/docs/python/python27/using27#Configure_WSGI_Script_Handlers

app = webapp2.WSGIApplication(routes=[ 
    (r'/', MainPage), 
    # ... other paths ... 
], debug=True) # True for now until ready for prod... 
+0

Я только что обновил ситуацию в вопросе. Дайте мне знать, если вам нужна дополнительная информация. Благодаря! – clifgray

+1

Хорошо выглядит. То, что у вас есть, почти есть. Просто добавьте 'app =' перед последней строкой в ​​файле 'main.py':' webapp2.WSGIApplication ([('/', MainPage)], debug = True) ', чтобы он выглядел так:' app = webapp2. WSGIApplication ([('/', MainPage)], debug = True) 'Потому что это то, что ваш' app.yaml' (скорее всего) говорит GAE искать. – bernie

+0

GOT IT! ахх, спасибо, я не могу поверить, что я пропустил это. – clifgray

Смежные вопросы