Django无法从数据库向HTML页面获取数据问题求助
Django数据渲染无输出问题修复
问题根源
- 视图传递的变量名与模板中使用的变量名不匹配:视图里传的是集合数据,模板却用了未定义的变量名
- 视图返回的是多个对象的集合(QuerySet),模板直接访问单个对象属性会无效,需要遍历集合
- 模型类名不符合Python规范(建议大写开头),虽不影响运行,但易引发后续维护问题
修复后的代码
1. models.py(修正类名,符合规范)
from django.db import models class Image(models.Model): name = models.CharField(max_length=100) img = models.ImageField(upload_to='slideshow1')
2. admin.py(同步模型类名)
from django.contrib import admin from .models import Image admin.site.register(Image)
3. views.py(优化变量名,保持语义清晰)
from django.shortcuts import render from .models import Image def slideshow1(request): images = Image.objects.all() return render(request, 'slideshow1.html', {'images': images})
4. urls.py(补充路由斜杠,避免访问异常)
from django.urls import path from . import views urlpatterns = [ path('login/', views.login, name='login'), path('signup/', views.signupform, name='signup'), path('logout/', views.logout, name='logout'), path('slideshow1/', views.slideshow1, name='slideshow1'), ]
5. slideshow1.html(遍历集合,处理空数据情况)
{% load static %} <!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> {% block content %} {% for img in images %} <h1>{{ img.name }}</h1> <!-- 如需显示图片,添加以下代码(需先配置媒体文件路径) --> <img src="{{ img.img.url }}" alt="{{ img.name }}"> {% empty %} <p>暂无图片数据</p> {% endfor %} {% endblock %} </body> </html>
额外注意事项
- 必须通过Django后台(admin)添加至少一条
Image数据,否则页面会显示"暂无图片数据" - 若要显示图片,需在项目
settings.py中配置媒体文件路径:
并在项目根目录的MEDIA_ROOT = BASE_DIR / 'media' MEDIA_URL = '/media/'urls.py中添加:from django.conf import settings from django.conf.urls.static import static urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
内容的提问来源于stack exchange,提问作者Jemesh Khatik
相关产品推荐
相关产品推荐

