Django 2.0数据库数据前端展示求助:新手如何将数据渲染到HTML页面
嘿,别慌!作为Django新手,你已经走对了一半——模板里的循环语法是对的,核心问题是还没把数据库的数据传递给模板。Django的MTV模式里,视图(views.py)是连接数据库和模板的桥梁,我来一步步帮你搞定:
第一步:补全你的模型(如果还没写完的话)
你提供的EventType模型里label字段没写完,先把它补全,确保模型能正常工作:
from django.db import models from django.utils.translation import gettext_lazy as _ class EventType(models.Model): ''' Simple ``Event`` classification. ''' objects = models.Manager() abbr = models.CharField(_('abbreviation'), max_length=4, unique=False) label = models.CharField(_('label'), max_length=100) # 补全CharField的完整定义 def __str__(self): return self.label # 可选,方便在Django后台查看对象名称
第二步:编写视图函数(views.py)
视图负责从数据库查询数据,再把数据传给模板。在你的app的views.py里添加以下代码:
from django.shortcuts import render from .models import EventType # 导入你定义的EventType模型 def show_classes(request): # 从数据库查询所有EventType数据 class_info = EventType.objects.all() # 把数据放入上下文字典,键名要和模板里的变量名完全一致(模板里用的是classInfo,注意大小写!) context = {'classInfo': class_info} # 渲染blank.html模板,并把上下文数据传进去 return render(request, 'blank.html', context)
第三步:配置URL路由(urls.py)
要让用户访问某个URL时触发上面的视图,需要配置路由:
- 如果你的app有独立的
urls.py(推荐做法),在app的urls.py里添加:
from django.urls import path from .views import show_classes urlpatterns = [ # 比如访问 /your-app-name/classes/ 就会触发视图 path('classes/', show_classes, name='show_classes'), ]
然后在项目根目录的urls.py里引用这个app的路由:
from django.urls import include, path urlpatterns = [ path('your-app-name/', include('your-app-name.urls')), # 其他项目路由... ]
第四步:测试验证
- 先通过Django后台或者Python shell往
EventType表里添加几条测试数据; - 启动Django开发服务器,访问你配置的URL(比如
http://localhost:8000/your-app-name/classes/); - 现在页面应该会循环显示所有
EventType的label字段啦!
小提示
- 如果需要筛选特定数据,比如只显示
abbr为"CS"的记录,可以把EventType.objects.all()改成EventType.objects.filter(abbr='CS'); - 模板里的循环变量
i可以改成更有意义的名字,比如event_type,这样{{ event_type.label }}可读性更强; - 确保你的
blank.html放在app的templates文件夹下(比如your-app-name/templates/blank.html),Django默认会在这里查找模板。
内容的提问来源于stack exchange,提问作者Tahmid
相关产品推荐
相关产品推荐

