python – 从单个视图提供多个模板(或者我应该使用多个视图?)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 从单个视图提供多个模板(或者我应该使用多个视图?),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1645字,纯文字阅读大概需要3分钟。
内容图文
与this post相关,我想从单个Django视图中填充多个HTML页面.这与我刚刚提到的链接之间的区别是,我不希望它以编程方式为基础.我的模板上有链接,如“报告”和其他公司特定的类别.如果用户点击“报告”链接,我想将他们带到一个新页面,向他们展示报告.这些数据都是相互关联的,所以我最初假设我会/应该对所有数据使用相同的视图.当我开始写这篇文章时,我开始想知道我是否应该为所有页面使用单独的视图.总共不应超过3-4页,具体取决于我希望如何拆分类别.
所以TL; DR:我应该为模板中的每个HTML页面使用单独的视图,还是应该/我可以使用单个视图来填充网站上的所有不同页面,即使大多数数据来自相同的源?
解决方法:
使用基于类的视图的可能解决方案是创建基本视图类,该类将收集公共上下文数据,然后根据特定数据和模板的需要对其进行扩展.实际上,基类不必是View的扩展,ContextMixinextension就足够了
基类应如下所示:
class BaseContextMixin(ContextMixin):
def get_context_data(self, **kwargs):
context_data = super(BaseContextMixin, self).get_context_data(**kwargs)
common_data_1 = ...
context_data["common_key_1"] = common_data_1
common_data_2 = ...
context_data["common_key_2"] = common_data_2
...
return context_data
然后可以按如下方式实现视图:
class MyFirstView(TemplateView, BaseContextMixin):
template_name = "mir/my_first_template.html"
def get_context_data(self, **kwargs):
context_data = super(MyFirstView, self).get_context_data(**kwargs)
context_data["my_special_key"] = my_special_data
return context_data
class MySecondView(TemplateView, BaseContextMixin):
template_name = "mir/my_second_template.html"
def get_context_data(self, **kwargs):
context_data = super(MySecondView, self).get_context_data(**kwargs)
context_data["my_special_key_2"] = my_special_data_2
return context_data
这样可以避免冗余代码,同时可以保持结构简单
内容总结
以上是互联网集市为您收集整理的python – 从单个视图提供多个模板(或者我应该使用多个视图?)全部内容,希望文章能够帮你解决python – 从单个视图提供多个模板(或者我应该使用多个视图?)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。