如何在Django中用HTML表格展示MySQL数据,无渲染效果如何解决
问题根因
你的articleapp/urls.py路由配置错误,直接使用了TemplateView渲染模板,没有调用你编写的table_list视图函数,导致模板所需的tablelst上下文变量根本没有被传递到模板层,循环遍历空变量自然不会渲染出任何内容。
修复步骤
1. 修正articleapp/urls.py配置
首先导入你编写的视图,将路由关联到table_list视图函数而非TemplateView:
# 开头先导入依赖 from django.urls import path from . import views urlpatterns = [ # 替换原有的TemplateView配置 path('table_list/', views.table_list, name='table_list'), ]
2. 其他可排查项
如果修改路由后仍无数据,可以按以下顺序排查:
- 确认
company_rate表存在真实数据:进入Django Shell执行CompanyRate.objects.all(),检查返回的查询集是否非空 - 视图文件顶部确认已经正确导入模型:
from .models import CompanyRate - 修正模板的标签错误:你当前模板里写了两个
<tbody>起始标签,没有闭合标签,将循环结束后的<tbody>改为</tbody> - 可以在模板中增加调试逻辑确认变量传递状态:
{% block content %} <!-- 加在表格前调试用,正常显示后可以删除 --> {% if tablelst %} <p>成功获取到{{ tablelst|length }}条数据</p> {% else %} <p>未获取到任何数据</p> {% endif %} <table class="table table-hover table-responsive"> <tbody> {% for article in tablelst%} <tr> <td>{{ article.date }}</td> <td>{{ article.notice_name }}</td> <td>{{ article.event }}</td> <td>{{ article.basic_amount }}</td> <td>{{ article.num_of_company }}</td> <td>{{ article.avg_of_1365 }}</td> <td>{{ article.hd_rate }}</td> <td>{{ article.hd_num }}</td> <td>{{ article.hj_rate }}</td> <td>{{ article.hj_num }}</td> <td>{{ article.hm_rate }}</td> <td>{{ article.hm_num }}</td> <td>{{ article.url }}</td> </tr> {% endfor %} </tbody> <!-- 这里修正为闭合标签 --> </table> {% endblock %}
内容的提问来源于stack exchange,提问作者Hyuk
相关产品推荐
相关产品推荐

