Django如何使用模板标签 - Imagekit app

时间:2014-03-18 20:57:01

标签: python django templates django-templates django-imagekit

models.py

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 / John / profile_photo / filename

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应该是什么?它没有在官方文档中指定。 我尝试 source =' /static/uploads/J/John/profile_photo/EU.jpg' ,但后来我收到错误' SafeText&# 39;对象没有属性' name'

如果source_image应该是图像的路径,如何以dinamically方式指定它? 感谢

1 个答案:

答案 0 :(得分: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()

如果您能想到一些可以使其更清晰的措辞,请提交拉取请求!