【发布时间】:2013-12-05 05:25:44
【问题描述】:
我有一个 Django 函数read_detail,它根据是否允许用户阅读页面返回 True 或 False。该函数在具有不同逻辑的几个不同的类中重复,但有一个逻辑我认为总是相同的,如果用户是超级用户,则返回 True。我想这样设置:
@is_superuser
def read_detail()
如果用户是超级用户,@is_superuser 将强制 read_detail() 返回 True,并且不会进行进一步的评估。然后我可以避免跨类重复这一点逻辑。这可能吗?
【问题讨论】:
-
查看某个用户是否为超级用户的逻辑是什么?
-
请考虑给您的函数起一个更合理的名称,例如
can_read_details()。现在看起来你的函数会读取一些细节。 -
在您的特定情况下使用装饰器也是值得怀疑的。我不是很了解背景,但是这两行代码真的很简单易读:
if is_superuser(): return True。现在你想删除这 2 条超级简单的线并添加 1 条线,它不知道它实际上做了什么。