2012-06-04 142 views
0

在django 1.4中設置上傳路徑的最佳做法是什麼? 我有這樣將圖像保存爲Django,正確的方法是什麼?

def upload_image(instance, filename): 

    return os.path.join(instance.slug, filename) 

class Book(models.Model): 
    ... 
    ... 

    image = models.ImageField(upload_to=upload_image) 

    def admin_image(self): 
     return "<img src='%s' />" % self.image 

    .... 

與settings.py

PROJECT_DIR = os.path.dirname(os.path.realpath(__file__)) 
ROOT_DIR = PROJECT_DIR.rsplit(os.sep, 1)[0] 

MEDIA_ROOT = os.path.join(ROOT_DIR, 'books', 'static', 'books') 
MEDIA_URL = '/media/' 

STATIC_ROOT = '' 
STATIC_URL = '/static/' 

和admin.py這樣

class BookAdmin(admin.ModelAdmin): 
    list_display = ('title', 'admin_image') 

這樣一個模型,最終,我得到了正確的圖像保存到/root-of-project/books/static/books/programming-java/wall.jpg, 但是,數據庫中保存的路徑是「programming-java/wall.jpg」,我必須將前綴' /秒tatic/books /'每次顯示圖像

回答

1

爲什麼要在模板中對這些行進行concat/hardcode?您可以使用靜態標籤用於這一目的

{% load staticfiles %} 
<img src="{% static "images/hi.jpg" %}" /> 

別名

{% load staticfiles %} 
<img src="{% static object.image.url %}" /> 

如果你真的一定要,你可以添加一個方法,你的模型,它會爲你?

相關問題