You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中以列表形式展示DormRoom.room_number字段

嘿,别担心,刚接触Stack Overflow和Django都会有这样的过程,我来一步步帮你解决在模板里展示宿舍房间号列表的问题~

第一步:确认你的DormRoom模型(Models.py)

先给你一个基础的模型示例,如果你的模型已经有其他字段,对应调整就行:

from django.db import models

class DormRoom(models.Model):
    room_number = models.CharField(max_length=10)  # 用来存储401、402这类房间号,用IntegerField也可以
    # 可以添加其他字段,比如所属楼层、容纳人数等

    def __str__(self):
        return self.room_number  # 后台管理里显示房间号,方便识别
第二步:编写视图逻辑(Views.py)

你需要在视图里获取要展示的房间数据,然后传递给模板。这里分两种情况:

  • 如果是展示所有宿舍房间:
from django.shortcuts import render
from .models import DormRoom

def dorm_detail(request):
    # 获取所有房间对象
    rooms = DormRoom.objects.all()
    # 把数据传递给模板
    return render(request, 'Dorm_Detail.html', {'rooms': rooms})
  • 如果是展示某个特定宿舍的房间(假设你有Dorm模型和DormRoom关联):
from django.shortcuts import render, get_object_or_404
from .models import Dorm

def dorm_detail(request, dorm_id):
    # 获取指定的宿舍,不存在就返回404
    dorm = get_object_or_404(Dorm, id=dorm_id)
    # 获取该宿舍下的所有房间(这里的dormroom_set是默认关联名,如果你设置了related_name,就用你设置的名字)
    rooms = dorm.dormroom_set.all()
    return render(request, 'Dorm_Detail.html', {'dorm': dorm, 'rooms': rooms})
第三步:配置URL映射(URLs.py)

在你的app的urls.py里添加视图对应的URL:

from django.urls import path
from . import views

urlpatterns = [
    # 对应“所有房间”的视图
    path('dorm-detail/', views.dorm_detail, name='dorm-detail'),
    # 对应“特定宿舍房间”的视图,带宿舍ID参数
    path('dorm-detail/<int:dorm_id>/', views.dorm_detail, name='dorm-detail'),
]

别忘了把这个app的urls包含到项目根目录的urls.py里哦!

第四步:在模板里渲染房间号(Dorm_Detail.html)

现在就可以在模板里把房间号展示成你想要的格式了,给你两种常用方式:

方式一:逗号分隔的文本形式(符合你示例的Rooms: 401, 402...)

<p>Rooms: {% for room in rooms %}
    {{ room.room_number }}
    {% if not forloop.last %}, {% endif %}
{% endfor %}</p>

这样渲染出来就是Rooms: 401, 402, 403, 404的效果,最后一个房间后面不会多逗号。

方式二:标准列表形式

如果想要每个房间号单独占一行的列表,可以用无序列表:

<p>Rooms:</p>
<ul>
    {% for room in rooms %}
        <li>{{ room.room_number }}</li>
    {% empty %}
        <li>暂无可用房间</li>
    {% endfor %}
</ul>

加了{% empty %}分支,当没有房间数据时会显示提示,更友好。

如果你的模型字段名或者关联关系和示例不一样,只要对应调整代码里的字段名(比如room_number改成你实际的字段名)就行,很灵活的~

内容的提问来源于stack exchange,提问作者django_python_newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:01:37