2014-03-18 29 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