我有一个模板,显示宿舍的详细信息,其中列出了" room_numbers"。
问题:
我正在尝试制作" room_numbers"作为每个特定宿舍详细信息页面的链接(见上面的截图)。宿舍详细信息页面具有以下格式: rooms /< int:pk> ,如我的urls.py中所述
我已经浏览过网络,无法找到我需要开始的地方。 Django和Python新手在这里请耐心等待。
URLs.py>
urlpatterns = [
path('', views.index, name='index'),
path('list/', views.DormsListView.as_view(), name='dorms'),
path('list/<int:pk>', views.DormsDetailView.as_view(), name='dorm-detail'),
path('rooms/', views.DormsRoomView.as_view(), name='rooms'),
path('rooms/<int:pk>', views.DormsRoomsDetailView.as_view(), name='rooms-detail'),
]
Views.py(DormsDetailView)&gt;
class DormsDetailView(LoginRequiredMixin, generic.DetailView):
model = Dorm
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['room_numbers'] = ", ".join(self.object.dormroom_set.values_list('room_number', flat=True))
return context
Views.py(DormRoomsDetailView)&gt;
class DormsRoomsDetailView(LoginRequiredMixin, generic.DetailView):
model = DormRoom
Dorm_Detail.html&gt;
<div>Rooms: {{ room_numbers }}</div>
答案 0 :(得分:0)
您可以将列表保留为列表,而不是将列表转换为包含", ".join()
的字符串吗?在Dorm_Detail.html
中,您可以循环遍历它们。
{% for room in room_numbers %}
<a href="#"> {{ room }} </a>
{% endfor %}
这应该将所有房间号码显示为单独的链接。希望我能正确理解这个问题!
答案 1 :(得分:0)
我会直接在模板中执行此操作。返回房间号列表,而不是带逗号的字符串,然后在模板中构建逻辑,包括链接。
类似的东西:
<div>
Rooms:
{% for room_number in room_numbers %}
<a href="{% url 'rooms-detail' room_number %}">{{ room_number }}</a>{% if not forloop.last %},{% endif %}
{% endfor %}
</div>
然后,在模板中:
{% if not forloop.last %},{% endif %}
process.env
部分只是在房间号码之间添加逗号,就像您在视图中一样。但是当它是最后一次迭代时,它就不会打印逗号。