Как заставить DjangoTemplates работать рекурсивно - PullRequest
0 голосов
/ 16 января 2019

У меня есть шаблон home.html, который представляет собой приложение в Django. Теперь я добавил несколько шаблонов в файл html, чтобы обеспечить динамическую генерацию HTML. Например, я использую {% load static %}, а затем href="{% static "path/to/resources" %}". Поэтому, когда я открываю приложение, после запуска сервера путь создается динамически.

Теперь проблема в том, что статические файлы, которые загружаются динамически, также должны загружать другие статические файлы (и расширять шаблон). Я думал, что DjangoTemplating может работать рекурсивно, и будет работать с вызываемым файлом, но, к сожалению, это не так.

Итак, что я должен сделать, чтобы убедиться, что вся моя шаблонная логика учтена Джанго и разрешена для запуска?


home.html фрагмент:

{% load static %}
<area alt="andhra" title="Andhra Pradesh" name="andhra" href="{% static  "personal/pages/andhra.html" %}" shape="poly" ... />

andhra.html выглядит примерно так:

{% extends "personal/post.html" %}

{% blockcontent %}
  <style>
   #slider
   {
     width: 80%;
....
<div class="carousel-inner">
    <div class="carousel-item active">
        {% load static %}
        <img class="d-block w-100" src="{% static "personal/images/andhraImages/1911-1915.jpg" %}" alt="First slide">
    </div>
...
{% endblock %}

Который хочет расширить шаблон: post.html, который имеет {% blockcontent %} и {% endblock %} в своем теле.

andhra.html не обрабатывается по шаблону. То есть, когда я открываю приложение, home.html загружается правильно, но когда я перехожу на andhra.html из home.html, оно вообще не обрабатывается DjangoTemplating.

1 Ответ

0 голосов
/ 23 января 2019

Итак, как сказал Даниэль Роузман в комментариях, загрузка файлов в виде статического файла не будет работать. Мы хотим, чтобы Django их отобразил. Итак, я создал функцию state в моем views.py как:

def state(request,state):
    return render(request,'personal/pages/'+state+'.html')

Это означает, что он пытается отобразить файл на templates/personal/pages/<state>.html. Теперь мой urls.py выглядит так:

urlpatterns = [
    path('',views.index,name='index'),
    path('<state>',views.state,name="state")
]

Обратите внимание, что это относится к приложению polls. Теперь, поскольку urls.py в mysite имеет polls/, теперь ссылка на эти представления будет доступна для localhost:8000/polls/<state>.

Теперь в каждом месте, где я хотел статическую ссылку, я сделал динамическую по:

href="{% url 'state' 'uttarakhand' %}"

, где 'state' - это name из urlpattern, а 'uttarakhand' - это входное значение.

...