编写django验证器。我是否需要自己的验证程序文件?

编写django验证器。我是否需要自己的验证程序文件?,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,Django Manuel中有一个编写验证器的例子。 库特 例如,这里有一个只允许偶数的验证器: from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ def validate_even(value): if value % 2 != 0: raise ValidationError(

Django Manuel中有一个编写验证器的例子。

库特


例如,这里有一个只允许偶数的验证器:

from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _

def validate_even(value):
    if value % 2 != 0:
        raise ValidationError(
            _('%(value)s is not an even number'),
            params={'value': value},
    )
您可以通过字段的validators参数将其添加到模型字段:

> from django.db import models
> 
> class MyModel(models.Model):
>     even_field = models.IntegerField(validators=[validate_even])

库特端

但是我应该把这个代码放在哪里呢

 from django.core.exceptions import ValidationError
    from django.utils.translation import gettext_lazy as _

    def validate_even(value):
        if value % 2 != 0:
            raise ValidationError(
                _('%(value)s is not an even number'),
                params={'value': value},
        )

我应该创建一个自己的文件,比如validator.py,还是应该将其放入模型中?

最好的做法是尽可能多地分离代码的不同逻辑组件。因此,只将模型的代码放在模型文件中,并将验证程序代码放在单独的文件中。

我将项目范围内的可重用验证程序放在core/validators.py中。App/validators.py中的应用程序级验证程序。如果行数不多,您可以将它们保存在models.py或forms.py(如果使用django rest framework,则可以将它们保存在serializers.py)中,但我个人的偏好是将它们分开。