Отображение нескольких представлений на одной странице
У меня есть 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()
- это просто словарь контекстных данных для использования шаблонами, поэтому до тех пор, пока правильные данные находятся в этом словаре и правильные имена переменных из этого словаря используются в отображаемом шаблоне или любых шаблонах, включенных в него, он должен отображаться.
Надеюсь, это поможет ответить на ваш вопрос!