简化上传文件命名的小型应用程序
dj-upload-to的Python项目详细描述
DJ上传至
概要
简化上传文件命名的小型应用程序。 许可证是麻省理工学院的。
安装
您可以使用pip将dj上载到从pypi发布的版本中:
$ pip install dj-upload-to
或者从github开发一个:
$ pip install -e git+https://github.com/marazmiki/dj-upload-to#egg=dj-upload-url
您无需将其包含在已安装的应用程序中
使用量
假设您有型号:
fromdjango.dbimportmodelsfromdj_upload_toimportUploadToupload_to=UploadTo()classModel(models.Model):file=models.ImageField(upload_to=upload_to)
如您所见,upload to生成可调用对象(使用调用方法传递到文件字段的upload to属性(有关详细信息,请参见django upload_to docs)
当使用最初命名为myphoto.jpg的图像保存模型时,文件
将以如下名称保存:
model/ab/cd/abcdabcd-0123-4567-8901-234567890ab.jpg
其中:
- model是从model类自动生成的前缀。您可以覆盖它
- ab是文件名的前2个字符段
- cd是文件名的第二个2个字符段
- abcd-0123-4567-8901-234567890ab使用uuid文件名自动生成
- .jpg是从原始文件中提取的小写扩展名
定制
您可以使用构造函数中的选项自定义上传到的行为
- 前缀:文件名的前缀。默认值为dj_upload_to.not_provided。如果无,则将丢失前缀。如果未显式设置,将根据模型类名自动生成
- num_seg:分段的部分数。默认值为2
- 段大小:字符段长度。默认值为2
- 保存名称:使用原始名称而不自动生成。默认值为false
有一些例子:
>>>model_instance=Model()>>># Disable prefix>>>UploadTo(prefix=None)(model_instance,'file.jpg')u'c0/17/c01745b4-e70b-4dd8-a5f7-76fec32fcb83.jpg'>>># Explicitly given prefix>>>UploadTo(prefix='my_files')(model_instance,'file.jpg')u'my_files/d9/a4/d9a4ef25-11b0-41bb-a543-baaac6553024.jpg'>>># Four segment and automatically generated prefix>>>UploadTo(num_seg=4)(model_instance,'file.jpg')u'model/36/52/99/f6/365299f6-8dc5-4ca2-848d-965f002a9b72.jpg'>>># Segment length is 4 chars>>>UploadTo(seg_size=4)(model_instance,'file.jpg')u'model/3142/f2ef/3142f2ef-2680-4a99-82fc-3c8d9d3179dc.jpg'>>># Save original filename>>>UploadTo(save_name=True)(model_instance,'file.jpg')u'model/file.jpg'>>># Save original filename without prefix>>>UploadTo(save_name=True,prefix=None)(model_instance,'file.jpg')u'file.jpg'
贡献
欢迎在GitHub上提出想法、错误修复和请求
更改日志
1.1
- 添加deconstruct()支持
1.0.2
- 修复sad setup.py错误
1.0.1
- 添加前缀禁用
- 添加更改日志
- 更新的文档
1.0.0
初始版本