Как передать переменную в другой шаблон, используя {% include%} в Django? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть шаблон TreeView и шаблон itemList. Я хочу, чтобы эти два шаблона отображались на одной странице, поэтому я попытался включить шаблон itemList в шаблон Treeview, используя {% include %}. Когда я нажимаю на листовой узел в Treeview, itemList должен отображать соответствующий контент.

До сих пор я заставлял эти два шаблона работать независимо, но теперь я застрял в том, как объединить их вместе, вот мой urls.py

url(r'^marketgroups',views.show_marketgroups,name='marketgroups'),
path('marketgroup/<int:pk>',views.itemListView.as_view(),name='invtypes_list'),

и views.py

def show_marketgroups(request):
    return render(request,"sde/marketgroups.html",{'marketgroups':Marketgroups.objects.all()})

class itemListView(generic.ListView):
    model = Invtypes
    template_name = 'sde/invtypes_list.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        pk = self.kwargs['pk']
        context['invtypes'] = Invtypes.objects.filter(marketgroupid=pk).order_by('typeid')

        return context

, а вот и рыночные группы. html

<div class="row" >
        <div class="">
            {% load mptt_tags %}
            <ul id="mktUL">
            {% recursetree marketgroups %}
                <li>
                {% if node.is_leaf_node %}
                    <li><span class=""><a href="{{ node.get_absolute_url }}">{{ node.nameid }} {{ node.marketgroupid }}</a></span></li>
                {% else %}
                    <li><span class="mktcaret">{{ node.nameid }}</span>
                        <ul class="nested">
                            <li>{{ children }}</li>
                        </ul>
                    </li>
            {% endif %}
                </li>
            {% endrecursetree %}
            </ul>
        </div>
        <div class="">
            <p>itemList supposed to be load here</p>
            {% include "sde/invtypes_list.html" with node.pk %}
        </div>
    </div>

Я не понял, как чтобы указать {% include %} загружать разные значения pk, возможно, используйте AJAX?

Мой текущий метод - вызвать get_absolute_url в ссылках на листовые узлы, чтобы, когда я нажимаю на листовой узел, он открывает invtypes_list. html и отображает соответствующий контент, хотя он может работать, но я хочу, чтобы эти два шаблона отображались на одной странице.

Это мой invtypes_list. html

{% for i in invtypes %}
   <li>
      <a href="">{{ i.typename }} {{ i.typeid }}</a>
      <p id="price"></p>
   </li>
{% endfor %}

Но когда я пытаюсь использовать {% include %} для загрузки invtypes_list. html в рыночные группы. html, invtypes_list. html ничего не показывает, даже если я даю ему существующее значение pk.

Когда я добавить содержимое stati c (например, <p>HELLO</p>) в invtypes_list. html, будет отображаться содержимое stati c, я думаю, это демонстрирует, что {% include %} работает, но значение pk передано неправильно? Это правильно? Как это исправить? пожалуйста, помогите мне.

...