Django项目实战: 图片上传显示与动态定义图片上传路径和文件名

上传图片与显示图片是Web开发中的一个重要环节。本文是个Django实战小项目,教你如何使用Django自带的通用视图(Generic View)实现图片的上传与显示。我们还会教你如何设置上传路径,以及动态地分配图片名。如果你还不懂什么是通用视图,请阅读我们之前发布的千字长文Django核心基础(3): 视图(View)的编写及通用视图。在你开始练习这个项目前,请确保你使用的是Django 2.0及以上版本,而且你已经通过pip安装好了Python的图片库pillow

 

项目分析

我们首先使用django-admin.py startapp pic_upload创建一个小应用app,名叫pic_upload。它将包含3个简单功能性页面:

  • 查看图片清单

  • 查看图片详情

  • 上传新图片

为了简化这个项目,我们的图片将只会有3个属性:标题,图片与上传日期。

 

第一步:编写模型Model

Django Web开发的第一步永远是编写模型。关于如何正确的编写模型,请看我们原创文章Django核心技术基础(1): Models模型。本项目的pic_upload/models.py代码如下所示。

 

from django.db import models
from datetime import date
from django.urls import reverse


# Create your models here.
class Picture(models.Model):
    title = models.CharField("标题", max_length=100, blank=True, default='')
    image = models.ImageField("图片", upload_to="mypictures", blank=True)
    date = models.DateField(default=date.today)

    def __str__(self):
        return self.title

    # 对于使用Django自带的通用视图非常重要
    def get_absolute_url(self):
        return reverse('pic_upload:pic_detail', args=[str(self.id)])

这个模型中有两点是需要值得你注意的:

  • 当你使用ImageField或FileField的时候,你必须定义upload_to选项,这是文件上传后所在的文件夹。数据库本身并不存储文件,而只是存储文件的链接。如果项目的媒体文件根目录是media, 那么本例中上传后的图片会被存储在media/mypictures/。

  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值