Отображение нескольких представлений на одной странице

У меня есть Django Webapp, который имеет несколько форм для добавления данных в базу данных. После добавления этих данных я хочу представить их на приборной панели. У меня есть представления, которые добавляют логику для представления данных, но, насколько я могу понять, можно привязать только 1 представление к шаблону, иначе данные не будут отображаться на шаблоне.

Я думаю, что есть способ передать данные как контекст, но я не могу понять, как написать это для моего представления.

У меня очень простое представление для отображения событий

def all_events(request):
        event_list = Event.objects.all()
        return render(request, 'pages/event_list.html',{'event_list': event_list})

Я передаю это в event_list, который работает нормально. Но если я % include % на приборной панели, я получаю HTML, но не данные, что, как я теперь понимаю, правильно.

Но, будучи абсолютным новичком в Django, я бы не отказался от примера, который я мог бы применить ко всем моим другим представлениям.

Спасибо

Я не уверен, правильно ли я понимаю вашу проблему, но простое включение файла pages.html не передаст правильные контекстные данные в приборную панель, если они не находятся в представлении, подключенном к конечной точке приборной панели. Django направляет конечную точку на представление, представление получает контекстные данные из моделей или создает их, и возвращает шаблон с данными.

Ваш шаблон url для приборной панели может выглядеть примерно так

urlpatterns = [
    path('dashboard/', dashboard_view, name="dashboard"),
]

и ваше представление может выглядеть следующим образом

def dashboard_view(request):
        event_list = Event.objects.all()
        return render(request, 'path/to/dashboard.html',{'event_list': event_list})

При условии, что файл event_list.html правильно использует переменную контекстных данных, как показано в примере ниже, она также будет отображаться на приборной панели.

{{ for event in event_list }}
    {{ event.attribute }}
{{ endfor }}

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

Надеюсь, это поможет ответить на ваш вопрос!

Вернуться на верх