image.url returns view.py Django 1.6 中的本地完整路径

image.url returns local full path in view.py Django 1.6

Image.url ImageField return 在 view.py 中的本地路径。我在 settings.py 中检查了 MEDIA_ROOT 和 MEDIA_URL,但是 image.url(此外,image.path 和 image.name)总是 return local full小路。我可以使用正确的 url 访问该文件,并且该文件保存了正确的路径。

请帮帮我!

我刚刚使用 Django 1.8.3Python 2.7.6 从头开始​​测试了一个示例,它非常有效:

# models.py:
from django.db import models


class ImageTest(models.Model):
    photo = models.ImageField(upload_to='photos')

# settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = 'media/'

我为此模型设置了管理员,上传了一张图片,然后通过 shell 我测试了这张图片的 url 字段:

>>> from main.models import ImageTest
>>> ImageTest.objects.all()[0].photo.url
'media/photos/zunzun_logo.png'

如你所见,它是一个相对路径。我实际上不知道你的情况会发生什么。也许如果您可以在此处粘贴一些代码,我可以为您提供更多帮助;)。希望这可以帮助您找到解决方案。

我也遇到了这个问题。 获取完整本地路径的一个常见原因是当您使用函数更改 upload_to 字段中的路径时。您只需确保函数 returns 是相对路径,而不是完整路径。 在我的例子中,如果 none 存在,我的函数将创建必要的目录。我需要为此使用完整的 MEDIA_ROOT 路径,但必须确保它返回 upload_to.

的相对路径值