Я использую Django исключительно для создания шаблона (без сервера). Вот схема, которую я имею:

page1.html

{% extends "base.html" %}
{% block 'body' %}

    <div class="container">
        <img src="./images/{{filename}}" style="padding-top:100px; padding-left:100px" align="center" width="60%" heig
    </div>

{% endblock %}

base.html

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="../src/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="../src/sticky-footer-navbar.css">
        <link rel="icon" href="../images/favicon.ico">

        <title>MY TITLE</title>

    </head>
    <body>


 <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="../index.html">Adjuvant</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="../index.html">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="mailto:foo@yahoo.com">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    <!-- End navbar -->


        <!--- BEGIN INSERT TEMPLATE FOR OTHER PAGE  HERE-->
        {% block 'body' %}

        {% endblock %}
        <!--- END TEMPLATE FOR OTHER PAGE  HERE-->



    <footer class="footer">
      <div class="container">
        <p class="text-muted"> &copy; 2015 &middot;  
     </p>
      </div>
    </footer>


    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="../src/jquery-1.11.0.min.js"><\/script>')</script>
    <script src="../src/bootstrap.min.js"></script>
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="../src/ie10-viewport-bug-workaround.js"></script>




    </body>


</html>

< Сильный > code_to_make_template.py

from django.template import Template, Context, loader
from django.conf import settings
settings.configure()

template  = open("htmls/src/templates/page1.html" ).read()
t = Template(template)
filename = "mypicture.svg"
c = Context({'filename':filename})
output_string = t.render(c)

Структура каталогов выглядит так:

 current_dir
   |___ code_to_make_template.py
   |___ html
         |_ src
             |_ templates
                  |_ base.html
                  |_ page1.html

Но когда я запускаю code_to_make_template.py, я получаю это сообщение:

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

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

8
neversaint 16 Дек 2015 в 03:52

3 ответа

Лучший ответ

django.core.exceptions.AppRegistryNotReady: приложения еще не загружены.

В соответствии с пунктом документации по автономным скриптам вам просто нужно настроить Django :

>>> from django.conf import settings
>>> settings.configure()
>>> 
>>> import django
>>> django.setup()
>>>
>>> from django.template import Template, Context, loader
>>> t = Template("Hello, {{name}}")
>>> c = Context({'name': 'world'})
>>> t.render(c)
u'Hello, world'
6
alecxe 21 Дек 2015 в 03:04

Если вы не хотите использовать модели и приложения django и т. Д., Возможно, вы захотите взглянуть на них, просто используя язык шаблонов Jinja (что django использует для создания шаблонов), если вы хотите использовать что-то еще, например apache или nginx, для вывода в виде простого HTML.

3
madattarp 16 Дек 2015 в 01:40

Просто чтобы убедиться, что я понимаю это, вы хотите генерировать обычные HTML-страницы на основе движка шаблонов django? Если да, то я использую django-medusa static генератор сайтов. Может быть, это излишне для того, что вы делаете, но я использую его для запуска локального экземпляра django и общего статического html, который я затем загружаю в разные места (godaddy, s3 и другие).

Это немного сложная настройка, но с ее помощью вы можете легко использовать не только систему шаблонов django, но также модели, запросы и т. Д.

1
MBrizzle 21 Дек 2015 в 03:12