我正在开发一个内部应用程序,我希望能够嵌套我的视图以保持一切都井井有条。我计划通过将页面的不同部分保存在他们自己的 HTML 文件中并使用他们自己的视图(单独的侧边栏和导航栏、单独的图表等)来做到这一点。
视图.py
from django.shortcuts import render
from django.views.generic import TemplateView
import Recall.data_logger.models as DLM
class ReportHome(TemplateView):
template_name = 'data_logger/index.html'
class SelectorSidebar(TemplateView):
template_name = 'data_logger/sidebar.html'
def get(self, request, *args, **kwargs):
companies = DLM.Company.objects.order_by('company_name').all()
return render(request, self.template_name, {'companies':companies,})
索引.html
<html>
<head></head>
<body data-gr-c-s-loaded="true">
{% include 'data_logger/navbar.html' %}
<div class="container-fluid">
<div class="row">
{% include 'data_logger/sidebar.html' %} <!-- This is the part I need help with-->
</div>
</div>
</body>
</html>
边栏.html
<div class="col-sm-3 col-md-1 sidebar">
<ul class="nav nav-sidebar">
{% for company in companies %}
<li><a href="#">{{ company.company_name }}</a></li>
{% endfor %}
</ul>
</div>
我知道仅使用{% include 'data_logger/sidebar.html' %}
它只是加载 HTML 并绕过SelectorSidebar
,我如何通过 View 引导它?我想要一个解决方案,它允许我访问从简单的名称列表到输入 D3 图表的相对较大的数据集的任何内容。
解决方案
这就是我最终使用的:
索引.html
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"
integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh"
crossorigin="anonymous"></script>
<script>
$.get("_sidebar", function(data, status){
$("#_sidebar").html(data);
});
</script>
</head>
<body data-gr-c-s-loaded="true">
{% include 'data_logger/navbar.html' %}
<div class="container-fluid">
<div class="row" id="_sidebar"></div>
</div>
</body>
</html>
_sidebar
SelectorSidebar 的 URL在哪里:
urlpatterns = [
path('', v.ReportHome.as_view(), name='ReportHome'),
path('_sidebar', v.SelectorSidebar.as_view(), name='SelectorSidebar'),
]