所以我有一个关于webfaction的项目,我需要创建两个不同的环境,一个用于服务器django,另一个用于服务器静态文件。
因此,当我从管理面板上传图像时,我可以看到图像位于我定义的根目录中,但是具有完整路径。当我在我的视图中返回图像时,我得到了我的domain.com/full/media/root/path/imagename
这会生成一个断开的链接 - 当我转到mydomain.com/uploads/image_name时,我可以看到图像文件在那里但是我的链接指向完整路径而不是root_url,
你可以帮我解决这个问题吗?我真的不明白我如何在我的视图中纠正这个图像链接<img src="{{ MEDIA_URL }}{{ mymodel.my_image }}" alt="{{ name }}" width="150" height="200" />
我知道有很多与此类似的主题,但是没有一个能正确指导我如何隐藏或更改路径根目录到“上传”
我的管理员工作正常
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导入模式,include,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}))
提前谢谢大家
答案 0 :(得分:1)
您可以使用:
{{ mymodel.my_image.url }}
答案 1 :(得分:0)
首先,您应该创建一个图像字段,然后在那里定义要上传图像的位置:
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 }}" alt="{{ mymodel.name }}" width="150" height="200" />