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方式指定它? 感谢
答案 0 :(得分:0)
source_image
需要是文件对象。 (例如,a_user_profile.photo
。)
可能不是很清楚,但它在the docs:
其他关键字样式参数将传递给已注册的生成器类。正如我们在上面看到的那样,图像规范构造函数需要一个源关键字参数,因此我们需要传递以使用我们的缩略图规范
source_file = open('/path/to/myimage.jpg')
image_generator = Thumbnail(source=source_file)
result = image_generator.generate()
如果您能想到一些可以使其更清晰的措辞,请提交拉取请求!