Django 中的 URLField(? 可以加载本地主机路径吗?

ZHU*_*LIU 5 python django url django-models django-forms

我正在以 django2 为例学习 django,并且正在构建一个社交媒体网站,用户可以在网站中共享图像。已经完成了一项功能,它正在使用书签工具(javascript)从其他网站加载图像然后上传到我的网站,但我想在此基础上再创建一项功能。我想让用户在本地主机上上传图像。

\n\n

模型.py

\n\n
class Image(models.Model):\n    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name=\'images_created\', on_delete=models.CASCADE)\n    title = models.CharField(max_length=200)\n    slug = models.SlugField(max_length=200,blank=True)\n    url = models.URLField()\n    image = models.ImageField(upload_to=\'images/%Y/%m/%d\')\n    description = models.TextField(blank=True)\n    created = models.DateField(auto_now_add=True,db_index=True)\n    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name=\'images_liked\', blank=True)\n    total_likes = models.PositiveIntegerField(db_index=True, default=0)\n\n    def __str__(self):\n        return self.title\n\n    def save(self, *args, **kwargs):\n        if not self.slug:\n            self.slug = slugify(self.title)\n        super(Image, self).save(*args, **kwargs)\n\n    def get_absolute_url(self):\n            return reverse(\'images:detail\', args=[self.id, self.slug])\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我写这样的 url 时"file://localhost/D:%5C1stu%5Cu=1422291456,3249037427&fm=173&app=25&f=JPEG.jpg"\nDjango 网站提醒我“ (Hidden field url) Enter a valid URL."\n谁能告诉我 Can URLField(\xef\xbc\x89 in django load a localhost path?and how??

\n

Pun*_*nki 2

是的,你可以,但出现错误的原因是 django URLfield 使用 url 验证器来验证 url,你可以在此链接上检查: https: //docs.djangoproject.com/en/3.0/ref/validators/#django.core .validators.URLValidator

现在,URL 验证器默认使用 ['http'、'https'、'ftp'、'ftps'],如果不提供任何验证(这就是您收到错误的原因),则使用“文件”。如果您必须使用 localhost url,请验证 url 字段。

访问此链接: 具有自定义方案的 Django URLField

我希望这对您有帮助。