使用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
如何正确修复?
答案 0 :(得分:1)
您无需指定绝对路径:
def signatures_path(instance, filename):
return 'signatures/{}/{}'.format(instance.id, filename)
Django默认使用MEDIA_ROOT
。
此外,您不需要单独的url
来提供媒体文件,django dev服务器知道如何处理这些文件。但是在生产服务器上,假如你将使用apache,则必须配置apache来提供媒体和静态文件。