更正 ImageField link
Correcting ImageField link
我使用的是 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}),
管理页面生成此 link:
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
如何正确修复它?
您不需要指定绝对路径:
def signatures_path(instance, filename):
return 'signatures/{}/{}'.format(instance.id, filename)
Django 默认使用 MEDIA_ROOT
。
此外,您不需要单独的 url
来提供媒体文件,django 开发服务器知道如何处理这些文件。但是在生产服务器上,假设您要使用 apache,则必须配置 apache 以提供媒体和静态文件。
我使用的是 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}),
管理页面生成此 link: 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
如何正确修复它?
您不需要指定绝对路径:
def signatures_path(instance, filename):
return 'signatures/{}/{}'.format(instance.id, filename)
Django 默认使用 MEDIA_ROOT
。
此外,您不需要单独的 url
来提供媒体文件,django 开发服务器知道如何处理这些文件。但是在生产服务器上,假设您要使用 apache,则必须配置 apache 以提供媒体和静态文件。