Как загрузить шаблон Django вне веб-приложения? - PullRequest
2 голосов
/ 23 мая 2011

Я пытаюсь использовать библиотеку шаблонов Django вне веб-приложения. Я могу передать контекстные переменные для создания HTML-документа. У меня есть код Python, который загружает шаблон и создает данные HTML. Когда я пытаюсь запустить скрипт, я получаю следующую ошибку:

raise InvalidTemplateLibrary("Template library %s does not have a variable named 'register'" % module_name)
django.template.InvalidTemplateLibrary: Template library django.template.loader_tags does not have a variable named 'register'

Как мне исправить эту проблему?

Я подтвердил следующее, что все мои шаблоны находятся в указанном мной каталоге TEMPLATE_DIRS. Мой код Python приведен ниже:

def LoadAndRenderTemplate(self, template_name,
                            items_to_be_rendered, blank_row=''):
    """Loads and renders the django template.

    Args:
      template_name: template path relative to TEMPLATE_DIRS
      items_to_be_rendered: items to be rendered
      blank_row: string flag value having permissible values 'odd' and 'even'
                 responsible for rendering BLANK_ODD_ROW and BLANK_EVEN_ROW
                 if the flag value is 'odd' and 'even' respectively.

    Returns:
      safe representation of html output
    """
    loaded_template = django_dep.loader.get_template(template_name)
    context = django_dep.template.Context({'report_date': self.report_date,
                                  'blank_row': blank_row,
                                  'items': items_to_be_rendered})
    return loaded_template.render(context)

Базовый шаблон (base.html)

      {% block body %}{% endblock %}
      {% block odd_even_row %}
      {% ifequal blank_row "odd" %}
         <!-- BLANK ODD ROW -->
         <tr style=width:100&#37;;font-weight:bold;background-color:#FFFFFF;
          font-size:11px;>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
         </tr>
      {% endifequal %}
       {% ifequal blank_row "even" %}
        <!--  BLANK EVEN ROW -->
        <tr style=width:100&#37;;background-color:#EEEEEE;font-size:11px;>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
         {% endifequal %}
         {% endblock %}

Шаблон верхнего сечения

         {% extends "base.html" %}
         {% block body %}
        <html>
          <head></head>
          <body style=font-family:arial;>
          <ul>
             <li>Dashboard</li>
          </ul><h3 style=color:#3366CC;>Student List as of {{ report_date }}</h3>
          <table style=border-collapse:collapse;background-color:#EEEEEE>
              <tr style=width:100&#37;;font-weight:bold;background-color:
                #E5ECF9;color:#3366CC;font-size:10px;>
                 <td style=width:4em;>First Name</td>
                 <td style=width:100em;>Last Name</td>       
              </tr>
           </table>
           </body>
           </html>
            {% endblock %}

Есть ли способ сделать это?

1 Ответ

1 голос
/ 19 сентября 2011

Я попытался воспроизвести вашу ошибку, но безуспешно.Вот (http://pastebin.com/k116mbXC) простой скрипт (на основе вашего кода), который отображает шаблон вне приложения django. Работает на Django 1.3.

...