Google App Engine: шаблон не работает при отображении HTML-формы - PullRequest
1 голос
/ 26 января 2011

В моем коде Python у меня есть

    the_button = '''<form action="/edit" method="get" >
                    <input type="submit" name="edit" value="Edit" />
                    </form>'''

    template_values = { 'the_button':the_button }
    path = os.path.join(os.path.dirname(__file__), 'the.html')
    self.response.out.write(template.render(path, template_values))

Проблема в том, что когда я вижу на странице, она показывает кнопку, но не активную, тогда, когда я просматриваю исходный HTML-код страницы, она не показывает код.

В чем может быть проблема?

Спасибо!

1 Ответ

2 голосов
/ 26 января 2011

Webapp , вероятно, экранирует ваш необработанный HTML.
Попробуйте добавить фильтр safe следующим образом:

{{  the_button|safe }}  

Из документации Django :

сейф
Отмечает строку как не требующую дальнейшего экранирования HTML перед выводом.
Когда автоэкранирование отключено, этот фильтр не действует.

EDIT:
К сожалению, Google App Engine из коробки запускает Django 0.96, который не имеет этой функции.
У вас есть два варианта:

  1. Установить более новую версию Django ( Django-NonRel )
  2. Спросите себя, почему вам нужно передать необработанный рискованный HTML-фрагмент из контроллера в представление.
    Вместо этого я бы переместил эту кнопку в представление, позволяя контроллеру показывать ее или не используя простую логическую переменную show_button.

В контроллере:

show_button = true
template_values = { 'show_button':show_button }
path = os.path.join(os.path.dirname(__file__), 'the.html')
self.response.out.write(template.render(path, template_values))

В the.html

{%if show_button  %}
    <form action="/edit" method="get" >
                    <input type="submit" name="edit" value="Edit" />
                    </form>
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...