django之对FileField字段的upload_to的设定方法

 更新时间:2019年07月28日 09:09:47   作者:Boyce_L  
今天小编就为大家分享一篇django之对FileField字段的upload_to的设定方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

用django开发,经常要处理用户上传的文件, 比如user模型里面如果又个人头像的字段 ImageField等等,而django在FielField字段(包括ImageField)的支持和扩展是做的很好的,首先一个问题,是上传的文件,django是放到哪里去了,(note: 文件流是不会放到数据库里面的,该字段在数据库中只存储路径),django提供了upload_to属性

以下介绍upload_to的具体使用方法

1.最直接的方式,硬编码路径

# MyProject.settings.py 里面设置MEDIA_ROOT and MEDIA_URL

MEDIA_ROOT = os.path.join(BASE_DIR, 'upload/')
MEDIA_URL = '/upload/' #这个是在浏览器上访问该上传文件的url的前缀

# models.py

class User(models.Model):
 avatar = ImageField(upload_to = 'avatar/')
 #实际的路径就是 MEDIA_ROOT/avatar/filename
 #所以可以用uoload_to来指定文件存放的前缀路径

2.使用strftime()

如果觉得以上方式太僵硬,万一文件重名了,那就会有各种问题了,为了避免重名,django在upload_to上内置了strftime()函数

# models.py
class User(models.Model):
 avatar = ImageField(upload_to = 'avatar/%Y/%m/%d/')

这样子的方式,%Y、%m、%d分别表示年、月、日

3.更加灵活的方式

当然,如果觉得只是避免文件路径重名,还是不能满足你,其实,django还允许你重写一个upload_to函数,重定义上传文件的路径前缀

# models.py

#让上传的文件路径动态地与user的名字有关
def upload_to(instance, fielname):
 return '/'.join([MEDIA_ROOT, instance.user_name, filename])

class User(models.Model):
 avatar = ImageField(upload_to = upload_to)
 user_name = CharField(max_length = 250)

以上这篇django之对FileField字段的upload_to的设定方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • python3.9安装RobotFramework的简单教程

    python3.9安装RobotFramework的简单教程

    python3.9安装RobotFramework,不同于python2.7和python3.6,使用这两个版本安装会出现问题,因为我安装遇到问题发现没有最新的教程,所以打算自己写一个,同时下面会记录安装步骤及使用的方法会出现的一些问题,对python3.9安装RobotFramework感兴趣的朋友一起看看吧
    2023-01-01
  • 详解Python 正则表达式模块

    详解Python 正则表达式模块

    这篇文章主要介绍了Python 正则表达式模块详解,分为两部分,包括基础语法总结,re模块的相关知识,需要的朋友可以参考下
    2018-11-11
  • python excel转换csv代码实例

    python excel转换csv代码实例

    这篇文章主要介绍了python excel转换csv代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python中字节数组和16进制字符串转换方式

    Python中字节数组和16进制字符串转换方式

    这篇文章主要介绍了Python中字节数组和16进制字符串转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 进一步探究Python的装饰器的运用

    进一步探究Python的装饰器的运用

    这篇文章主要介绍了更为深入的Python的装饰器的运用,Python的装饰器是Python学习进阶当中的重要知识点,需要的朋友可以参考下
    2015-05-05
  • PyQt 线程类 QThread使用详解

    PyQt 线程类 QThread使用详解

    QThread是我们将要详细介绍的第一个类。它也是 Qt 线程类中最核心的底层类。由于 PyQt 的跨平台特性,QThread要隐藏掉所有平台相关的代码。
    2017-07-07
  • Python绘制3D曲面图的示例代码

    Python绘制3D曲面图的示例代码

    Python提供了多种库和工具,使得创建和定制3D曲面图变得简单,本文将介绍如何使用Matplotlib和mpl_toolkits.mplot3d库绘制3D曲面图,感兴趣的可以了解下
    2024-04-04
  • Python获取好友地区分布及好友性别分布情况代码详解

    Python获取好友地区分布及好友性别分布情况代码详解

    利用Python + wxpy 可以快速的查询自己好友的地区分布情况,以及好友的性别分布数量。还可以批量下载好友的头像,拼接成大图。感兴趣的朋友跟随小编一起看看吧
    2019-07-07
  • Python依赖库的几种离线安装方法总结

    Python依赖库的几种离线安装方法总结

    这篇文章主要介绍了如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定不同的Python源进行安装,需要的朋友可以参考下
    2025-03-03
  • wxpython布局的实现方法

    wxpython布局的实现方法

    这篇文章主要介绍了wxpython布局的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论