跳转至

如何为 Django 应用创建缩略图?


2018-12-11 by dongnan

目标

Django环境,使用 sorl-thumbnail第三方库,生成缩略图文件。

环境

软件 版本
Django 1.11
Python 3.4
Ubuntu Desktop 14.04

安装

pip install sorl-thumbnail

配置

settings.py 配置文件,注册 thumbnail 应用。

INSTALLED_APPS = [
    #...省略
    'sorl.thumbnail',
    'web',

使用

配置 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 

在 template 中使用 thumbnail

# works.html 模板文件
{% extends 'web/base.html' %}
{% load static %}
# 使用前不要忘记载入 thumbnail
{% load thumbnail %}

重点 thumbnail 部分,其中 work.thumb 为 models 中的列, 360x510 为缩略图的宽和高, crop 为裁剪位置, 最后 as im 为实际的缩略图对象。

缩略图地址

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

更多示例,请参考这里

参考

如何在 Django admin 后台上传图片文件? Markdown富文本编辑器 django-mdeditor sorl-thumbnail sorl-thumbnail-install

回到页面顶部