dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2182
  • 铜币13514枚
  • 威望5930点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:215回复:0

如何使用 django sorl-thumbnail 创建缩略图?

楼主#
更多 发布于:2018-12-11 17:47
目标
在 django环境,使用 sorl-thumbnail(第三方库),生成缩略图文件。

环境
Django-1.11
Python-3.4
Ubuntu 14.04 Desktop

部署
1. 安装
pip install sorl-thumbnail

2. 配置
# 在 settings.py 配置文件,注册 thumbnail 应用:
INSTALLED_APPS = [
    #...省略
    'sorl.thumbnail',
    'web',

使用
1. 配置 models
# models.py 文件
from sorl.thumbnail import ImageField
#...省略

# 作品
class Work(models.Model):

    thumb = ImageField('缩略图', upload_to='thumbs/%Y/%m/%d')
    title = models.CharField('标题', max_length=80)
    content = MDTextField('正文')
    created_time = models.DateTimeField('创建时间', auto_now_add=True)
    modified_time = models.DateTimeField('修改时间', auto_now=True)
    excerpt = models.CharField('正文摘要', max_length=100, blank=True)
    views = models.PositiveIntegerField('访问次数', default=0)

    #
    category = models.ForeignKey(Category, verbose_name='分类')

    def __str__(self):
        return self.title

2. 在 template 中使用 thumbnail
# 例子,重点 thumbnail 部分,其中 work.thumb 为 models 中的列, 360x510 为缩略图的宽和高, crop 为裁剪位置, 最后 as im 为实际的缩略图对象。
# works.html 模板文件
{% extends 'web/base.html' %}
{% load static %}
# 使用前不要忘记载入 thumbnail
{% load thumbnail %}

描述:sorl-thumnail

图片:sorl-thumnail.png

sorl-thumnail


3. 最终生成的缩略图 url 类似如下(注意你自己的 MEDIA_URL设置):
http://127.0.0.1:8000/attachments/cache/8e/7f/8e7f11a197d5f18157ebca020538cb32.jpg

更多示例
https://sorl-thumbnail.readthedocs.io/en/latest/examples.html#template-examples

扩展:
如何在 django admin 后台上传图片文件?
django-mdeditor 友好的 markdown富文本编辑器

参考
https://github.com/jazzband/sorl-thumbnail
https://sorl-thumbnail.readthedocs.io/en/latest/installation.html
#
游客

返回顶部