2014-04-23 85 views
1

所以我有一個webfaction項目,我需要創建兩個不同的環境,一個服務器django和一個服務器靜態文件。Django 1.6圖像上傳和媒體路徑

所以當我從管理面板上傳圖像時,我可以看到圖像放置在我定義的根中,但是具有完整路徑。當我返回圖像在我看來我得到我的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進口模式,包括從django.conf導入設置URL

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

首先對於你的模型,你應該創建一個圖像字段,並在那裏你應該定義你的位置噸至上傳圖片:

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" /> 
1

您可以使用:

{{ mymodel.my_image.url }}