【发布时间】:2020-12-29 00:36:52
【问题描述】:
您好,我想看看 models.URLfield 是来自 youtube 还是 soundcloud。
url = models.URLField("URL", max_length=255, unique = True)
我该怎么做?
【问题讨论】:
标签: django validation model
您好,我想看看 models.URLfield 是来自 youtube 还是 soundcloud。
url = models.URLField("URL", max_length=255, unique = True)
我该怎么做?
【问题讨论】:
标签: django validation model
创建一个验证器方法,它解析 url 并检查主机名,并将其添加到您的字段中。
from urllib.parse import urlparse
from django.db import models
from django.core.exceptions import ValidationError
def validate_url(value):
if not value:
return # Required error is done the field
obj = urlparse(value)
if not obj.hostname in ('youtube.com', 'soundcloud.com'):
raise ValidationError('Only urls from YouTube or SoundCloud allowed')
class ModelA(models.Model):
url = models.URLField(
verbose_name="URL", max_length=255, unique=True, validators=[validate_url]
)
编辑示例;验证器不应返回值。这不像是表单上的干净方法。
查看更多信息:
【讨论】:
and obj.scheme == 'https' 扩展 if 语句(例如)