将业务逻辑封装在命令类中。

mutations的Python项目详细描述


突变

pypi-version

将您的业务逻辑组合成对输入进行清理和验证的命令。

安装

$ pip install mutations

工作原理:

  1. 子类mutations.Mutation
  2. 定义您的输入
  3. 在命令中定义一个execute方法。
  4. 运行它,如下所示:SimpleMutation.run(foo='bar')

要了解更多信息,请参见this blog post

示例

importmutationsclassUserSignup(mutations.Mutation):"""Define the inputs to your mutation here. """email=mutations.fields.CharField(required=True)full_name=mutations.fields.CharField(required=True)send_welcome_email=mutations.fields.Boolean(required=False,default=True)defvalidate_email_address(self):"""Custom validation for a field.        If you encounter any validation errors and want to raise, you should        raise mutation.ValidationError or some sublcass thereof. Otherwise, it        assumes there were no problems.        Any function beginning with `validate_` is assumed to be a validator        function and will be run before the mutation can execute.        """ifnotself.email.is_valid():raisemutations.ValidationError("email_not_valid","Email is not valid.")defexecute(self):"""Executes the mutation.        This method does the heavy lifting. You can call it by calling .run() on        your mutation class.        """user=User.objects.create(email=self.email,name=self.full_name)ifself.send_welcome_email:EmailServer.deliver(recipient=self.email)returnuser

调用命令

>>>result=UserSignup.run(email=email,full_name="Bob Boblob")>>>result.successTrue>>>result.return_value<Userid=...>>>>result.errorsresult=...
>>>result=UserSignup.run(email=None)>>>result.successFalse>>>result.errorsmutations.ErrorDict({'email':['email_not_valid']})>>>result.valueNone

仅运行验证

>>>result=UserSignup.validate(email=email,full_name="Bob Boblob")>>>result.is_validTrue

测试

$ make tests

当您准备发布时,请确保测试通过了2.7版 通过运行tox:

$ tox

版本控制

这个项目使用Semantic Versioning

谢谢

感谢赛普拉斯的红宝石。我创建这个库是因为我在为Python寻找类似的东西

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从JSP或HTML向servlet发送多个参数   java方法来查看字符是否在字符数组中   使用带有java的MAC地址连接到设备   java如何将csv文件中的数据打印到secondactivity?   java如何从netbean 7.0.1连接到数据库   java考虑所有可能的类值,用于输出测试分割的预测值。   java我的actionListener调用有什么问题   swing在Java中实现粒子过滤器最有效的方法是什么?   java运行。getFontFamily()为返回null。使用apachepoi的docx文件   一个事务中的java领域循环与每个步骤循环中的一个事务   java日期格式与Spring Boot不兼容   java类冲突。处理   java GridBagLayout不工作   java将图像发送到另一个应用程序