如何在不调用URL的情况下从Django模型获取和显示数据

时间:2020-02-11 21:01:51

标签: django python-3.x django-models django-templates django-views

我有一个基于类的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 :(得分:0)

@Charnel和@ChidG的以下解决方案有效。

@Shahzan,好吧,好吧,您是这样在模板中引用该变量的:{%包括带有state_list = state_list%}的'jobs / jobs_by_state.html'。因此,如果变量不在上下文中,则无法将其传递到包含的模板,因此包含的模板将不会显示任何内容。

相关问题