Django中如何在单个页面中引入两个模型?
解决Django单页面加载两个模型数据的问题
问题根源
你调用render函数时错误传入了两个上下文字典,Django的render函数仅支持接收一个上下文字典作为第三个参数,多传参数会导致解析异常,返回错误的HTML内容。另外代码里还有个变量名拼写错误:navigation_results_hone应该是navigation_results_home。
修正后的代码
views.py
def home(request): # 查询两个模型的所有数据 home_results = MainPageInfo.objects.all() navigation_results_home = Navigation.objects.all() # 合并所有上下文数据到一个字典中 context = { 'home_results': home_results, 'navigation_results_home': navigation_results_home } # 只传入一个上下文字典给render函数 return render(request, 'index.html', context)
admin.py(补充注册MainPageInfo)
别忘了在后台注册MainPageInfo模型,否则无法在admin后台管理该模型的数据:
admin.site.register(Navigation) admin.site.register(MainPageInfo)
模板使用示例(index.html)
在模板中可以分别调用两个模型的数据:
<!-- 展示MainPageInfo的数据 --> <div class="main-info"> {% for info in home_results %} <p>{{ info.title }}</p> {% endfor %} </div> <!-- 展示Navigation的SVG文件链接 --> <div class="navigation"> {% for nav in navigation_results_home %} <a href="{{ nav.title.url }}" target="_blank">打开SVG文件</a> {% endfor %} </div>
内容的提问来源于stack exchange,提问作者Proger228
相关产品推荐
相关产品推荐

