Как получить и отобразить данные из Django Model без вызова URL - PullRequest
1 голос
/ 12 февраля 2020

У меня есть ListView на основе классов, как показано ниже:

class JobByStateView(ListView):
    model               = State
    template_name       = 'jobs/jobs_by_state.html'
    context_object_name = 'state_list'
    ordering            = ['name']
    paginate_by         = 15

Я добавил путь к файлу urls.py, как показано ниже:

path('jobs/', JobByStateView.as_view(), name='job-by-state'),

И вот как выглядит шаблон:

    <div class="row">
      <div class="col-md-4">
        <ul class="list-unstyled mb-0">
          {% for state in state_list %}
            {% if forloop.counter|divisibleby:"5" == False %}
            <li>
              <a href="#">{{state.name}}</a>
            </li>
            {% else %}
            <li>
              <a href="#">{{state.name}}</a>
            </li>
            </ul>
            </div>
            <div class="col-md-4">
              <ul class="list-unstyled mb-0">
            {% endif %}
          {% endfor %}
        </ul>
      </div>
    </div>

Когда я пытаюсь получить доступ к этим шаблонам через URL (http://localhost: 8000 / jobs ), он работает как положено и отображает данные на экране. Но когда я пытаюсь встроить этот шаблон в другой шаблон, как показано ниже, на веб-странице ничего не отображается.

{% include 'jobs/jobs_by_state.html' %}

Я хотел бы отобразить этот шаблон как виджет в другом шаблоне.

Очень признателен, если кто-нибудь может помочь мне решить эту проблему.

Заранее большое спасибо за ваше время и помощь!

====== ================================================== =================

Другой шаблон страницы:

{% extends 'base.html' %}

{% block page_content %}

{% include 'carousel.html' %}

{% for job in job_list %}
<div class="listing-wrapper">
    <div class="listing-container border-top border-bottom">
        <a href="{{ job.get_absolute_url }}">
        <h2 class="heading mt-3 mb-1 mx-2 d-inline-block">{{ job.title}}</h2>
        </a>
    </div>
</div>
{% endfor %}


{% if is_paginated %}
<ul class="pagination justify-content-center my-4">
  {% if page_obj.has_previous %}
  <li class="page-item">
    <a class="page-link bg-dark text-white" href="?page{{page_obj.previous_page_number}}">&larr; Previous Page</a>
  </li>
  {% endif %}

  {% if page_obj.has_next %}
  <li class="page-item">
    <a class="page-link bg-dark text-white" href="?page{{page_obj.next_page_number}}">Next Page &rarr;</a>
  </li>
  {% endif %}
</ul>
{% endif %}

{% include 'jobs/jobs_by_state.html' with state_list=state_list %}

{% endblock page_content %}

{% block page_sidebar %}

{% include 'simple_search_widget.html' %}

<!-- Social Sharing Buttons -->
<div class="sharethis-inline-share-buttons mt-4"></div>

<!-- Newsletter Widget -->
{% include 'newsletter_widget.html' %}

{% endblock page_sidebar %}

Вид родительского шаблона показан ниже:

class JobList(ListView):
    model               = Job
    template_name       = "jobs/job_listings.html"
    context_object_name = "job_list"
    ordering            = ['-published_date']
    paginate_by         = 10

1 Ответ

0 голосов
/ 13 февраля 2020

Следующее решение от @Charnel и @ChidG сработало.

@ Shahzan, хорошо, хорошо, вы ссылаетесь на эту переменную в своем шаблоне следующим образом: {% include 'jobs / jobs_by_state. html' с state_list = state_list%}. Поэтому, если переменная не находится в контексте, она не может быть передана во включенный шаблон, и поэтому включенный шаблон не будет ничего отображать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...