gpt4 book ai didi

Django 模板上下文多个 View

转载 作者:行者123 更新时间:2023-12-02 20:13:51 25 4
gpt4 key购买 nike

我正在运行Idios, a profile app ,并且我想在 idios 之上创建我的应用程序中的配置文件(即保持 idios pip 可安装,而不修改应用程序本身)。

问题是,配置文件 View 是在 idios 应用程序中编写的,使用传递上下文变量的面向对象方法,并在模板中显示该 View 。我希望个人资料 View 还包括用户 friend 的列表,由单独的 friend 应用程序管理。我只需将 friend 导入 Idios 并使用新的friend_list 变量更新上下文,然后添加另一个模板 block 来显示 friend 列表,就获得了概念验证。

那么,在不改变 idios 应用程序的情况下结合好友列表和个人资料的最佳或最明智的方法是什么?这个问题基本上是请求帮助真正以支持可重用应用程序的 DRY 方式理解 Django 中的 MVT 系统。

最佳答案

值得庆幸的是,上述应用程序使用基于类的 View ,这就是使用基于类的 View 所带来的好处。要修改上下文,您只需创建其个人资料 View 的子类即可:

yourapp/views.py

from idios.views import ProfileDetailView

class MyProfileDetailView(ProfileDetailView):
def get_context_data(self, **kwargs):
context = super(MyProfileDetailView, self).get_context_data(**kwargs)

# get the list of friends and store it in a new key in `context`

return context

然后,只需在 urls.py 中重新定义 idios 默认使用的 urlpattern(需要在包含 idios urlpattern 之前进行)并将其指向您的子类

最后,要覆盖 idios 使用的模板,请在项目(或应用的)templates 目录中创建 idios/whatever_template.html 文件。复制默认模板,随意修改。由于 Django 提供了所有可用的覆盖,您根本不必实际接触原始源代码。

关于Django 模板上下文多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8683958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com