django - 我有 2 个具有相同发布方法的视图,保持 DRY 的最佳方法是什么
问题描述
我有一个房地产网站,有 2 个单独页面的 2 个视图。每个页面都有一个表格,允许您编辑交易详情。其中一个页面还允许您执行其他需要 post 方法的事情。
所以视图基本上是这样的:
class ViewOne(ListView):
# ...
def post(self, request, *args, **kwargs):
# update transaction logic
class ViewTwo(ListView):
# ...
def post(self, request, *args, **kwargs):
# update transaction logic
# additional post logic
在不编写重复代码的情况下添加更新事务到每个视图的发布逻辑的最佳方法是什么?
解决方案
这个问题可以通过使用 Mixin 来解决。
mixin 是一个类,它定义和实现了一个单一的、明确定义的特性。从 mixin 继承的子类继承了这个特性——仅此而已。
class TransactionLogicMixin:
def update_transaction(self):
# your transaction code goes here.
class ViewOne(ListView,TransactionLogicMixin):
# ...
def post(self, request, *args, **kwargs):
# update transaction logic
self.update_transaction()
class ViewTwo(ListView,TransactionLogicMixin):
# ...
def post(self, request, *args, **kwargs):
# update transaction logic
self.update_transaction()
# additional post logic
推荐阅读
- javascript - 如何使用 vanilla js 创建无限拖动滑块
- swiftui - 如何在 .animation() 期间访问 @Binding 的当前值
- javascript - 如何确保文本对 SVG 有效?
- r - 如何将类名添加到 terra SpatRaster 中的数值栅格值?
- python - 用于实时识别的 TensorFlow Lite 推理
- sql - 如何在静止值转换为日期时删除列中的第一个值
- html - AngularJS Bootstrap 复选框不检查点击
- powerbi - PowerBI 的单一过滤器
- c++ - 多进程 MPI 与多线程 std::thread 性能
- stata - Stata:如果数据丢失,则根据另一行替换一行的值