Django 嵌套视图

2023-12-01

我正在开发一个内部应用程序,我希望能够嵌套我的视图以保持一切顺利且井井有条。我计划通过将页面的不同部分保留在自己的 HTML 文件中并使用自己的视图(单独的侧边栏和导航栏、单独的图表等)来实现此目的。

views.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,如何通过视图引导它? 我想要一个解决方案,允许我访问任何内容,从简单的名称列表到输入 D3 图表的相对较大的数据集。

Solution

这就是我最终使用的:

索引.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>

Where _sidebar是 SelectorSidebar 的 URL:

urlpatterns = [
    path('', v.ReportHome.as_view(), name='ReportHome'),
    path('_sidebar', v.SelectorSidebar.as_view(), name='SelectorSidebar'),
]

我认为您对 Django 模板和视图如何协同工作感到困惑。

简而言之,Django 模板定义了组成页面的 HTML 代码。您可以使模板保持高度模块化和井井有条;为此,您可以使用include模板标签或者你可以使用模板继承,这是拥有“模块化”模板的一种非常强大的方式。

Django 视图基本上是一个接收 HTTP 请求并构建 HTTP 响应的函数(或者使用基于类的视图的类)。 拥有“嵌套”视图没有多大意义,因为通常您只有一个 HTTP 请求,并且您只想使用显示页面所需的 HTML 构建响应。

所以我认为你可以愉快地使用 Django 模板将构成页面的所有模块(标题、侧边栏等)组合在一起,但每个页面应该对应于一个 Django 视图。

另一种方法可以使用 AJAX 和 Javascript 发出不同的 HTTP 请求并构建页面客户端,但我认为这不是您在这里考虑的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 嵌套视图 的相关文章

随机推荐

  • 通过在一个热编码数据上训练的模型来预测新值

    这可能看起来是一个微不足道的问题 但我陷入了预测模型结果的困境 我的问题是这样的 我有一个形状为 1000 x 19 的数据集 目标特征除外 但经过一次热编码后 它变成了 1000 x 141 由于我在形状为 1000 x 141 的数据上
  • JavaScript - Chart.js 工具提示显示错误的 x 轴值

    我有一个包含两个不同数据集的图表 但有时它们具有相同的 x y 坐标 但是当我将鼠标悬停在共享点 有时会显示错误的日期 y 值是正确的 但 x 值显示不正确 尝试将鼠标悬停在共享点 在 codepen 上 在下图中你可以看到我正在悬停 y
  • 动态添加内容到RelativeLayout

    由于我仍在学习 Android 亚马逊表示我需要 2 个月的时间才能收到 Hello Android 一书 所以我仍在尝试做一些简单的事情 我可以使用RelativeLayout 单击按钮来显示图标图像视图 创建它的代码如下 private
  • 从txt中读取科学格式的数字

    我想从 txt 文件中读取并存储科学格式的数字 该文件已格式化并且数字由制表符分隔 这是我到目前为止所拥有的 IMPLICIT NONE REAL ALLOCATABLE DIMENSION 2 data INTEGER row colum
  • Spark 工作负载需要 HDFS 吗?

    HDFS 不是必需的 但在某些地方会出现建议 为了帮助评估运行 HDFS 所花费的精力 将 HDFS 用于 Spark 工作负载有哪些好处 最短的答案是 不 你不需要它 即使没有 HDFS 您也可以分析数据 但当然您需要在所有节点上复制数据
  • SQL捕获BULK INSERT错误4863

    我在 try catch 块内有一个批量插入 BEGIN TRY BULK INSERT dbo EQUIP STATUS CODE FROM filepath filename csv WITH MAXERRORS 1 FIELDTERM
  • JavaScript/jQuery 正则表达式用有效字符替换输入字段

    我正在构建一个 CMS 用户可以通过文本输入控件自定义页面的 SEO URL 例如 假设用户正在创建一个画廊 并且他们希望访问他们的页面http www example com my 1st gallery 请注意 my 1st galle
  • 打开第三方应用程序

    我正在开发一个使用包名称来启动第三方应用程序的应用程序 我做了一些研究 发现所有应用程序都可以从启动器意图启动 有谁知道如何通过单击按钮来执行此操作 您无法真正 启动应用程序 如果您知道包名 您可以尝试从第 3 方应用程序获取启动意图 In
  • 是否可以在另外 2 个 Flex div 之间滚动 div 内容?

    我在页面顶部粘贴了一个标题栏 A 在页面底部粘贴了一个页脚栏 C 每一个都有固定的高度30px并在这里用黄色表示 它们通过以下代码粘在那里 display flex align content space between 在这 2 个 di
  • 指定默认端口时“用户登录失败”

    尝试调试客户在尝试指定 SQL Server 端口时的连接问题 我检查了本地重现问题 我的服务器在默认的 1433 端口下运行 使用以下命令指定该端口 SqlConnectionStringBuilder builder new SqlCo
  • 如何从Java文本文件中读取单个单词(或行)?

    就像标题所说 我正在尝试编写一个程序 可以从文本文件中读取单个单词并将它们存储到String变量 我知道如何使用FileReader or FileInputStream阅读单个char但对于我正在尝试的事情来说 这是行不通的 输入单词后
  • 通过 Android 使用自定义请求方法

    在开发 API 时 需要提供对 API 的使用者 开发人员 有意义的自定义请求方法 请求方法的 标准 集 按照RFC 2616 are GET PUT POST DELETE TRACE CONNECT 我想添加另一个 称为SEARCH 在
  • Python:(从列表中)找到与另一个字符串最接近的字符串

    假设我有一个string Hello 和一个清单 words hello Hallo hi house key screen hallo question Hallo format 我怎样才能找到n words那些最接近 Hello 并出现
  • r 的 lm 预测中的警告[重复]

    这个问题在这里已经有答案了 collection lt data frame col1 X1 col2 X2 col3 X3 col4 X4 k lt 5 ind lt sample seq 1 k length X1 replace TR
  • 比较两个 CSV,匹配 2 个或更多列上的列,使用 powershell 从两个 CSV 中导出特定列

    我有 2 个 CSV left csv Ref ID First Name Last Name DOB 321364060 User1 Micah 11 01 1969 946497594 User2 Acker 05 28 1960 88
  • 为什么使用 System.Threading.Thread.Sleep() 是一种不好的做法?

    我正在编写一个应用程序 通过复杂的 API 与一个又大又丑的第三方系统一起工作 有时系统中会发生一些错误 但是如果我们等待我的程序面对这些错误 那就太晚了 因此 我使用单独的线程来检查系统状态 如下所示 while true ask sta
  • socket.error:[errno 99] 无法在 python 中分配请求的地址和命名空间

    我的服务器软件说errno99 cannot assign requested address当使用除127 0 0 1用于绑定 但如果 IP 地址是127 0 0 1有用 与命名空间有关吗 我正在另一个 python 程序中通过调用执行我
  • C#中双引号和单引号有什么区别?

    C 中双引号和单引号有什么区别 我编写了一个程序来计算文件中有多少个单词 using System using System IO namespace Consoleapp05 class Program public static voi
  • 使用 R 中的 Quadprog 包进行投资组合优化中的权重约束

    我是 R 和投资组合优化的新手 我正在尝试优化包含 7 种资产的投资组合 使得资产号 3 和 4 的最小权重均为 0 35 并且所有 7 种资产的总和等于 1 以下是我尝试过的代码 library quadprog dmat lt cov
  • Django 嵌套视图

    我正在开发一个内部应用程序 我希望能够嵌套我的视图以保持一切顺利且井井有条 我计划通过将页面的不同部分保留在自己的 HTML 文件中并使用自己的视图 单独的侧边栏和导航栏 单独的图表等 来实现此目的 views py from django