django:尝试组织 clean_data 函数和验证器。每件事去哪里?
django: trying to organize clean_data functions, and validators. Where does each thing go?
我正在尝试找到正确组织代码片段的方法,但我对这一切感到困惑:
我有 models.py 声明(显示部分字段)this
class Posts(models.Model):
image = models.ImageField(upload_to=user_directory_path, null=True, blank = True)
然后我想清理该字段,以防万一有人想在表单页面中搞笑。
所以我去了 forms.py 并创建了一个自定义方法来清理它
class PostsForm(ModelForm):
class Meta:
model = Posts
fields = ['image' , 'otherfields']
def clean_image(self):
image = self.cleaned_data['image']
好的,它已经清理干净了,但我还需要更多,比如确保他们上传的文件不会太大。所以我想我可以在 templates/validators 中创建一个目录,然后
创建一个像 validators.py 这样的文件,我在其中编写验证函数,然后我可以导入该函数。
所以。 validators.py
from django.core.exceptions import ValidationError
def file_size(value):
limit = 2 * 100 * 100
if value.size > limit:
raise ValidationError('File too large. Should be less than 200 Kbs')
所以当我在 forms.py 时,我想像这样 validators.py 导入那个文件
from myaapp.validators import file_size
但它告诉我它不知道这个 "file_size"(pycharm 中未解决的参考)
简而言之,我完全不知道如何组织这三件事。
这里的情况可能是PyCharm,无法识别文件。为什么不将文件移动到与 models.py 和 forms.py 相同的目录中?然后你可以通过
访问它
from myapp.validators import file_size
此外,在使用自定义验证器时,您应该提供要在模型和表单中使用的验证器 classes。
# models.py
from myapp.validators import file_size
class Posts(models.Model):
image = models.ImageField(validators=[file_size])
#forms.py
from myapp.validators import file_size
class PostsForm(ModelForm):
image = forms.imageField(validators=[file_size])
class Meta:
model = Posts
fields = ['image' , 'otherfields']
def clean_image(self):
image = self.cleaned_data['image']
如果您不在多个场景中使用验证器,只需一次。最好以 class 形式本身提供验证。
我正在尝试找到正确组织代码片段的方法,但我对这一切感到困惑:
我有 models.py 声明(显示部分字段)this
class Posts(models.Model):
image = models.ImageField(upload_to=user_directory_path, null=True, blank = True)
然后我想清理该字段,以防万一有人想在表单页面中搞笑。
所以我去了 forms.py 并创建了一个自定义方法来清理它
class PostsForm(ModelForm):
class Meta:
model = Posts
fields = ['image' , 'otherfields']
def clean_image(self):
image = self.cleaned_data['image']
好的,它已经清理干净了,但我还需要更多,比如确保他们上传的文件不会太大。所以我想我可以在 templates/validators 中创建一个目录,然后 创建一个像 validators.py 这样的文件,我在其中编写验证函数,然后我可以导入该函数。
所以。 validators.py
from django.core.exceptions import ValidationError
def file_size(value):
limit = 2 * 100 * 100
if value.size > limit:
raise ValidationError('File too large. Should be less than 200 Kbs')
所以当我在 forms.py 时,我想像这样 validators.py 导入那个文件
from myaapp.validators import file_size
但它告诉我它不知道这个 "file_size"(pycharm 中未解决的参考)
简而言之,我完全不知道如何组织这三件事。
这里的情况可能是PyCharm,无法识别文件。为什么不将文件移动到与 models.py 和 forms.py 相同的目录中?然后你可以通过
访问它from myapp.validators import file_size
此外,在使用自定义验证器时,您应该提供要在模型和表单中使用的验证器 classes。
# models.py
from myapp.validators import file_size
class Posts(models.Model):
image = models.ImageField(validators=[file_size])
#forms.py
from myapp.validators import file_size
class PostsForm(ModelForm):
image = forms.imageField(validators=[file_size])
class Meta:
model = Posts
fields = ['image' , 'otherfields']
def clean_image(self):
image = self.cleaned_data['image']
如果您不在多个场景中使用验证器,只需一次。最好以 class 形式本身提供验证。