简介
在Django中,当您想要在模板上显示的数据包含在一个对象中时,它很简单。总结步骤(实际上每个人都知道):
for
循环对模板中的结果进行迭代,以便在表格中显示对象。现在,让我们采取更复杂的情况
问题是:
问题是:
在将复杂数据传递给模板之前,我应该如何(哪种结构)和哪里(模型?视图?)?
我的想法(可能完全错误):
对于需要"传播数据的每个视图"为了传递给模板,我可以在views.py中创建一个方法(如viewXXX_organize_data()
),它将获取raws对象,并返回一个数据结构,其中包含有组织的数据,可以帮助我通过迭代显示表它
关于要选择的数据结构,我将列表与词典进行了比较
{{dict.a-key-name}}
而不是{{ tabl.3}}
更加清晰。你怎么看待这一切?感谢阅读,直到那里,并分享!
答案 0 :(得分:1)
根据您的问题,您正在进入概念/架构领域,而不是“我的项目中的数据的这个特定视图难以在django的模板层中表示”。所以我会试着给你看鸟问题(飞行时而不是在地上),你可以自己决定。
从第一个哲学框in the django template language documentation可以清楚地看出,模板应该具有尽可能少的程序逻辑。这表明模板中使用的数据的表示应该是简单的,并且完全适应您正在尝试构建的模板(这是我对它的解释)。这种方法表明,您应该有一个层负责中介数据(模型或其他来源)的表示以及模板所需的数据,以实现您希望用户看到的最终表示。
此图层可以简单地保留在您的视图中,在viewXXX_organize_data中,或者以其他形式保留在更复杂/更精细的体系结构中(请参阅DCI或Hexagonal)。
在你的情况下,我会先做一些像viewXXX_organize_data()这样的事情,我会为你正在尝试构建的模板使用最合适的数据结构,同时保持与获取数据的方式无关(通过模型其他服务)等等)。 您甚至可以考虑不直接在模板中使用模型对象,并创建模板特定对象来表示数据的特定视图。
希望这有助于您做出决定。这不是一个具体的答案,但会帮助您做出决定,然后通过您的应用程序保持连贯。