Django шаблон для l oop пуст - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь создать подробный вид в django, но в шаблоне ничего не отображается.

views.py

class MyDetailView(DetailView):
    model = Article
    template_name = 'detail.html'

detail. html

{% extends 'base.html' %}
{% load i18n %}
{% endblock %}

{% block content %}

{% for item in itemlist %}
{{item.pk}}
{{item.title}}

{% empty %}
There are no items in this list

{% endfor %}
{% endblock %}

Почему здесь ничего не отображается в шаблоне?

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вы не передаете элемент с именем itemlist в шаблон в DetailView. В ListView (который выглядит более подходящим) по умолчанию будет использоваться переменная контекста с именем object_list. Поскольку переменная отсутствует, шаблонный блок {% for … %}…{% endfor %} [Django -doc] будет преобразован в пустую строку.

Если вы хотите передать набор запросов Article s в контекст через имя itemlist, вы можете установить атрибут context_object_name [Django -doc] :

from django.views.generic import ListView

class MyDetailView(ListView):
    model = Article
    template_name = 'detail.html'
    <b>context_object_name = 'itemlist'</b>
0 голосов
/ 26 марта 2020

Как сказал Виллем в комментарии, вы находитесь в подробном представлении, поэтому вам не нужно для l oop повторять, вы можете просто показать детали в шаблоне, например: {{item.pk} }

...