Шаблон Django в Google App Engine с оператором if - PullRequest
2 голосов
/ 15 апреля 2011

Я довольно новичок в движке приложений Google, и только что закончил читать. Поэтому я начал реализовывать простое приложение на GAE и вскоре получил сообщение «TemplateSyntaxError», «оператор if» неправильно отформатирован », когда просто рендерил html, в котором используется оператор if. Я решил проблему, используя вместо этого оператор ifequal, но в этом руководстве показано, как использовать оператор if в index.html (http://code.google.com/appengine/docs/python/gettingstarted/templates.html)

Я что-то пропускаю, чтобы использовать оператор if в шаблоне?

Спасибо, Yoo

ОБНОВЛЕНИЕ:
Вот подробности ошибки. Я думаю, что ответ Криса позволит мне использовать «Смарт», если тег, хотя. Я постараюсь обновить версию Django до 1.2 в ближайшее время.

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 634, in __call__
    handler.get(*groups)
  File "C:\Store house\gae\community\src\community.py", line 24, in get
    self.response.out.write(template.render(path, template_values))
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", line 72, in render
    t = load(template_path, debug)
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", line 100, in load
    template = django.template.loader.get_template(file_name)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader.py", line 80, in get_template
    template = get_template_from_string(source, origin, template_name)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader.py", line 88, in get_template_from_string
    return Template(source, origin, name)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 158, in __init__
    self.nodelist = compile_string(template_string, origin)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 174, in compile_string
    return parser.parse()
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 273, in parse
    compiled_result = compile_func(self, token)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader_tags.py", line 154, in do_extends
    nodelist = parser.parse()
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 273, in parse
    compiled_result = compile_func(self, token)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader_tags.py", line 132, in do_block
    nodelist = parser.parse(('endblock', 'endblock %s' % block_name))
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 273, in parse
    compiled_result = compile_func(self, token)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\defaulttags.py", line 655, in do_if
    raise TemplateSyntaxError, "'if' statement improperly formatted"
TemplateSyntaxError: 'if' statement improperly formatted

ОБНОВЛЕНО 2:
Согласно этой статье (http://code.google.com/appengine/docs/python/tools/libraries.html#Django), текущий движок приложений Google уже включен в Django 1.2, но текущая версия по умолчанию - 0.96, поэтому я не смог использовать тег if. Чтобы использовать версию 1.2, следуйте инструкциям по ссылке выше. Теперь Я могу использовать «Смарт», если тег. Спасибо всем:)

Ответы [ 2 ]

5 голосов
/ 15 апреля 2011

Если вы пытались использовать тег:

{% if x == 1 %}

и вы получаете ошибку, которая устраняется с помощью

{% ifequal x 1 %}

это знак, что ваша версия Django 1.1 или ниже. «Умный», если теги поставляются с версией 1.2

Изменить, чтобы добавить, Django 1.2 и выше работает на GAE. См. в этом блоге , чтобы узнать, как его настроить, если вы действительно используете старую версию Django.

0 голосов
/ 15 апреля 2011

Убедитесь, что вы точно придерживаетесь синтаксиса шаблонов django. Убедитесь, что у вас есть, если он заключен внутри {% %}. Также убедитесь, что у вас есть пробелы между {%, %} и for. Чтобы узнать больше, пройдите через это Django-шаблон

{% if var1 %}
 {{ var1|safe }}
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...