Django模板无法展示已存入数据库的帖子数据,找不到代码错误如何解决
Django模板无法展示数据库数据的问题排查与修复
以下是你代码中存在的可直接导致数据不展示的错误,以及对应修复方案:
- 路由配置冲突(核心错误)
Django路由按照从上到下的顺序匹配,你将相同路径index/绑定了两个视图函数,实际访问该路径时只会触发第一个匹配到的NewPostMaker视图,viewposts视图完全不会被执行,自然不会把查询到的posts数据传递到模板。
修复方案:给viewposts分配独立的访问路径,示例:
# 修改urls.py中的对应规则 path("posts/",views.viewposts,name="posts")
如果需要提交表单后在同页展示数据,也可以直接把查询NewPost的逻辑合并到NewPostMaker视图中,在该视图返回模板的时候同步带上posts参数即可。
- 模板循环变量命名冲突
模板中写的{% for posts in posts %}会把外层传入的posts列表变量覆盖,导致循环逻辑异常。
修复方案:修改循环变量名,对应修改循环内的属性调用:
{% for post in posts %} <ul> <li> <h4>{{ post.user }} || {{ post.timestamp }}</h4> <h3>{{ post.post }}</h3> </li> </ul> {% empty %} <h6>No post availabel 😔</h6> {% endfor %}
- 模型类
__str__方法语法错误NewPost的__str__方法里直接使用post、user、timestamp变量,没有加self.前缀访问实例属性,会触发变量未定义报错,影响后台调试。
修复方案:修改__str__方法:
def __str__(self): return f"post : {self.post} || user: {self.user} || timestamp: {self.timestamp} "
- 额外注意点
如果你的首页(路径/)使用的也是index.html模板,需要确保views.index视图中也查询了NewPost的数据并传递给模板,否则访问首页时同样不会展示帖子数据。
内容的提问来源于stack exchange,提问作者lony235
相关产品推荐
相关产品推荐

