更正ImageField链接

时间:2015-09-10 23:20:57

标签: python django django-settings imagefield

使用django 1.8我有

# model.py
def signatures_path(instance, filename):
    return '{}/signatures/{}/{}'\
        .format(settings.MEDIA_ROOT, instance.id, filename)


class Des(models.Model):
    user = models.OneToOneField(User)
    signature = models.ImageField(upload_to=signatures_path,\
        blank=True, null=True, default=None)


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

# urls.py : I've included this pattern
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),

管理页面生成此链接: http://192.168.155.44:8000/home/max/myapp/myapp/media/signatures/1/sig.png 哪个不起作用,但我可以查看图像 http://192.168.155.44:8000/media/signatures/1/sig.png

如何正确修复?

1 个答案:

答案 0 :(得分:1)

您无需指定绝对路径:

def signatures_path(instance, filename):
    return 'signatures/{}/{}'.format(instance.id, filename)

Django默认使用MEDIA_ROOT

此外,您不需要单独的url来提供媒体文件,django dev服务器知道如何处理这些文件。但是在生产服务器上,假如你将使用apache,则必须配置apache来提供媒体和静态文件。