Django新闻聚合项目模板无内容渲染 无报错该如何排查?
问题原因
最核心的错误在views.py的查询逻辑:
你写的代码是:
all_posts = Post.objects.all
这里的all是Django ORM的查询方法,必须加括号执行才能返回实际的帖子查询集,你现在传递给模板的是all方法本身,不是已经查询到的帖子数据,模板遍历这个方法对象时不会有任何结果,所以页面空白也不会抛出语法错误。
修复方案
把views.py里的对应行修改为:
all_posts = Post.objects.all()
修改后刷新页面即可正常遍历渲染帖子。
其他可优化点(不直接导致空白,建议调整)
- 模板里重复引入了两次Twitter、Reddit的嵌入脚本,保留一份全局引用即可,避免重复加载
- 模板中多个元素使用了相同的
id="timeline",id属性要求页面内唯一,建议改成class="timeline"避免潜在的前端脚本异常 - 可以先在视图中把帖子按类型拆分好再传给模板,避免模板中两次遍历全量帖子列表,提升渲染效率:
def main(request): all_posts = Post.objects.all() context = { 'twitter_posts': all_posts.filter(post_type='twitter'), 'reddit_posts': all_posts.filter(post_type='reddit') } return render(request, "test.html", context)
模板里直接遍历对应类型的列表即可。
内容的提问来源于stack exchange,提问作者nick_rinaldi
相关产品推荐
相关产品推荐

