1

我正在开发一个使用大量客户端的系统。
一些客户端希望系统的特定行为,例如:不同的 html 代码或不同的报告,或者他们希望跳过某些命令执行。
要指定此行为,我使用如下代码:

if sender.id == 123:
    do_something()

现在我有很多带有“if”的字符串,它确实阻止了代码读取。有什么模式可以解决这个问题吗?一般来说,我正在寻找可以将逻辑与独特条件分开的方式。

4

2 回答 2

0

如果它是纯粹的演示文稿(模板),您可以为不同的用户行为指定特定的模板。
我还建议不要检查用户 ID,而是使用某种额外的模型来扩展用户模型。因此可以在不更改代码的情况下编辑数据。

于 2013-10-22T13:07:16.693 回答
0

我决定使用装饰器。当我有一些特定于某些客户端的代码时,我用包含我放置在文件“decorators.py”中的装饰器的函数来包装它。例子:

视图.py

def some_function(请求):
    do_some_usual_stuff()
    ...
    @do_specific_stuff_decorator
    def do_specific_stuff(发件人):
        返回 sender.price1 + sender.price2

    value = do_specific_stuff(request.sender)
    ...

装饰器.py

def do_specific_stuff_decorator(do_specific_stuff)
    def 内部(发件人):
        #sender foo 在某些情况下不需要支付 price2
        如果 sender.name = 'foo':
            价格 = 发件人.price1
        别的:
            价格 = do_specific_stuff(发件人)
        返回值
    返回内部

装饰器的这种用法提醒您,这部分代码包含某些客户端的特定行为,但阅读最重要的代码很清楚。

于 2014-02-26T11:48:50.713 回答