2014-03-18 27 views
0

models.py的Django如何使用模板標籤 - Imagekit應用

def get_upload_file_name(instance, filename): 
    return "uploads/%s/%s/profile_photo/%s" % (instance.user.username[:1], instance.user.username, filename) 

class UserProfile(models.Model): 
    ###..... 
    photo = models.ImageField(upload_to = get_upload_file_name, 
           blank = True, null = True, 
           height_field = 'photo_height', 
           width_field = 'photo_width') 

因此,如果當前user.username是約翰資料圖片會去上傳/ J /約翰/ profile_photo /文件名

views.py

from .image_processors import register_generator 

#..... 

@login_required 
def EditProfile(request): 

    register_generator() 
    #.... 

image_processors.py

from imagekit import ImageSpec, register 
from imagekit.processors import ResizeToFill 

class Thumbnail(ImageSpec): 
    processors = [ResizeToFill(60, 80)] 

def register_generator(): 
    register.generator('user_profile:thumbnail', Thumbnail) 

最後,模板包含:

{% generateimage 'user_profile:thumbnail' source=source_image %} 

我的問題是:

又該source_image是什麼?它沒有在官方文檔中指定。 我試圖做源=「/static/uploads/J/John/profile_photo/EU.jpg」,但後來我得到的錯誤「SafeText」對象有沒有屬性「名」

如果source_image應該是圖像的路徑,如何用動態方式指定它? 謝謝

回答

0

source_image需要是一個文件對象。 (例如,a_user_profile.photo

它可能不是超清晰,但它是在the docs

附加關鍵字式參數傳遞給發電機的註冊類。正如我們上面看到的,圖像規格構造期望源關鍵字參數,所以這就是我們需要通過使用我們的微縮規格

而且earlier

source_file = open('/path/to/myimage.jpg') 
image_generator = Thumbnail(source=source_file) 
result = image_generator.generate() 

如果你能想到的一些措辭的那個我會更清楚地說明,請提交一個拉請求!

+0

大聲笑,我是失明的。我多次閱讀文檔並總是跳過這些文字。 –

+0

np(:我將更新「早期」示例以使用相同的變量名稱('source_file'),因此連接強度更大一些。我認爲它們都是'source_image',但我改變它以使它清楚它是一個文件類對象而不是PIL圖像,但錯過了那個。 – matthewwithanm