繁体   English   中英

Django:使用视图来处理模板标签的逻辑吗?

[英]Django: Using views to handle the logic of template tags?

我编写了一个templatetag,其中包含我通常希望在视图中找到的许多逻辑。 在编写一些单元测试时,我开始怀疑一种稍微不同的方法。 我没有足够的经验来判断优缺点(也许这甚至是众所周知的做法-还是不行...)。 这就是为什么我对您的意见感兴趣。

我的想法是编写一个视图以处理所有逻辑,并将templatetag用作将所有相关上下文传递到该视图并返回呈现的HTML的包装器。

我希望从这种方法中获得好处:

  • 更容易提供不同的输出格式
  • 更容易干燥
  • 更容易测试
  • 在视图内使用装饰器和mixins进行权限检查
  • 视图内的缓存控件
  • 面向ajax和/或边缘侧的好方法包括
  • 更高的灵活性

例如,渲染树导航的模板标签在通过模板标签进行访问时可以传递HTML,同时其相应视图仍可通过URL访问。

该视图可以提供不同的输出格式,如JSON,RSS,XML,处理权限检查等。可以通过该视图测试高级逻辑,而不必为确保基本的基础而对templatetag测试用例负责。

我将不胜感激其他意见,提示或指向软件包或相关文章的链接。

我认为模板标签的问题是:

  1. 太多的抽象。
  2. 具有挑战性的测试。
  3. 性能问题

我建议的是:

  1. 创建一个函数来生成数据,缓存数据,处理权限以及其他与数据相关的内容
  2. 编写另外三个函数,分别以HTML,JSON和XML呈现数据
  3. 记录和编写上述功能的测试
  4. 根据需要在视图,过滤器和模板标签中使用这些功能。 调用函数的视图/过滤器/标签将非常薄且易于管理。

通过这种方法获得的好处是:

  1. 可重用代码
  2. 更容易测试的代码
  3. 更快的速度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM