gpt4 book ai didi

python - Django - 结合 DetailView 和 ListView

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:32 24 4
gpt4 key购买 nike

我是 Django 的新手,我想构建一个网络应用程序来显示您的事件列表。您可以有多个不同的列表(例如体育赛事、生日……)。我制作了两个模型 - 日历(事件列表)和事件。

在我的页面上,我有导航菜单,您可以在其中看到“日历”列表。当您单击一个日历时,您可以看到该日历的事件列表,但我还想在侧边栏中保留一个日历列表。

据我了解 Django,我需要两个 View - ListView(用于侧边栏日历)和 DetailView(用于每个日历上的事件)。

以下是我的观点:

class DetailView(generic.DetailView):
model = Calendar
template_name = 'koledarji/detail.html'

class CalendarsView(generic.ListView):
template_name = 'koledarji/calendars.html'
context_object_name = 'calendars_list'
def get_queryset(self):
return Calendar.objects.all()

通过这种方法,我在每个特定日历上的详细信息都可以,但是我在侧边栏导航菜单上丢失了我的日历列表。

我的特定日历的网址:

url(r'^(?P<pk>[0-9]+)$', views.DetailView.as_view(), name='detail'),

和我的模板的一部分:

{% extends 'prijavljen/calendar.html' %}

{% block cal_name %}

{% for calendar in calendars_list %}
{% if request.path == '/prijavljen/'|add:calendar.id %}
{{calendar.name }}
{% endif %}
{% endfor %}
{% endblock %}

在那段代码之后,我想列出一个事件列表,但例如,即使是日历名称也应该足以解决。

我试图通过将 request.path 与我想要的路径 od calendar 进行比较来解决这个问题,但也没有用。

如有任何帮助,我们将不胜感激。

最佳答案

您可以修改 DetailView 类并添加一个 get_context_data() 方法。这将允许您将额外的上下文(在本例中为您的 Calendars.objects.all() 查询集)注入(inject)到您的详细信息 View 中。

class MyDetailView(generic.DetailView):
model = Calendar
template_name = 'koledarji/detail.html'
def get_context_data(self, *args, **kwargs):
context = super(MyDetailView, self).get_context_data(*args, **kwargs)
context['calendars_list'] = Calendar.objects.all()
return context

关于python - Django - 结合 DetailView 和 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41287431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com