Django 1.6 图片上传和媒体路径

Posted

技术标签:

【中文标题】Django 1.6 图片上传和媒体路径【英文标题】:Django 1.6 image upload and media path 【发布时间】:2014-04-23 23:16:49 【问题描述】:

所以我有一个关于 webfaction 的项目,我需要创建两个不同的环境,一个用于服务器 django,一个用于服务器静态文件。

所以当我从管理面板上传图像时,我可以看到图像被放置在我定义的根目录中,但具有完整路径。当我在视图中返回图像时,我得到了我的 domain.com/full/media/root/path/imagename

这会生成一个断开的链接 - 当我转到 mydomain.com/uploads/image_name 时,我可以看到图像文件在那里但是我的链接指向完整路径而不是 root_url,

你能帮我解决这个问题吗?我真的不明白如何在我的视图中更正此图像链接

<img src=" MEDIA_URL  mymodel.my_image "    />

我知道这里有很多类似的主题,但是没有一个可以正确地指导我如何隐藏或将路径根更改为“上传”

在我的管理员中可以正常工作

class Movie(models.Model):

name = models.CharField(max_length=50)


def get_file_path(instance, filename):
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (uuid.uuid4(), ext)
    return os.path.join( '/home/user/webapps/project/uploads/' , filename)


my_image = models.ImageField(upload_to = get_file_path, null=True, blank=True)
def __unicode__(self):
    return self.name

在我的设置中:

MEDIA_ROOT = '/home/user/webapps/project/uploads/'
MEDIA_URL = '/uploads/'

和项目网址:

从 django.conf.urls 导入模式、包含、url 从 django.conf 导入设置

  from django.contrib import admin
  admin.autodiscover()

  urlpatterns = patterns('',      
    url(r'^admin/', include(admin.site.urls)),
  )


if settings.DEBUG:
urlpatterns += patterns('',
(r'^uploads/(?P<path>.*)$', 'django.views.static.serve', 
'document_root': settings.MEDIA_ROOT))

提前谢谢大家

【问题讨论】:

【参考方案1】:

首先,您应该为您的模型创建一个图像字段,并在其中定义要上传图像的位置:

class mymodel(models.Model):
    name = models.CharField(max_length=50)
    my_image = models.ImageField(blank=True, null=True,upload_to='/home/user/webapps/project/uploads/')

之后,如果您想在从数据库中获取模型对象后显示图像,请尝试以下操作:

<img src=" mymodel.my_image.url "    />

【讨论】:

【参考方案2】:

你可以使用:

 mymodel.my_image.url 

【讨论】:

以上是关于Django 1.6 图片上传和媒体路径的主要内容,如果未能解决你的问题,请参考以下文章

Django后台上传的图片前台怎么显示不出来?路径的问题怎样解决?

django图片上传

Django_上传图片和模版获取图片

上传Django的个人资料图片无法正常工作

Django配置图片上传

Django关于上传图片遇到的问题