Django中FilePathField字段的⽤法
django项目实例class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])
⼀个 CharField ,内容只限于⽂件系统内特定⽬录下的⽂件名。有三个参数, 其中第⼀个是必需的:
FilePathField.path
必填。这个FilePathField 应该得到其选择的⽬录的绝对⽂件系统路径。例如: "/home/images".
FilePathField.match
可选的.FilePathField 将会作为⼀个正则表达式来匹配⽂件名。但请注意正则表达式将将被作⽤于基本⽂件名,⽽不是完整路径。例如: "foo.*.txt$", 将会匹配到⼀个名叫 的⽂件,但不匹配到 或者 foo23.png.
可选的.True 或 False.默认是False.声明是否包含所有⼦⽬录的路径
FilePathField.allow_files
可选的.True 或 False.默认是True.声明是否包含指定位置的⽂件。该参数或allow_folders 中必须有⼀个为 True.
FilePathField.allow_folders
是可选的.输⼊ True 或者 False.默认值为 False.声明是否包含指定位置的⽂件夹。该参数或 allow_files 中必须有⼀个为 True.
当然,这些参数可以同时使⽤。
有⼀点需要提醒的是 match只匹配基本⽂件名(base filename), ⽽不是整个⽂件路径(full path). 例如:
FilePathField(path="/home/images", match="foo.*", recursive=True)
...将匹配/home/images/foo.png⽽不是/home/images/foo/bar.png 因为只允许匹配基本⽂件名(foo.png 和 bar.png). FilePathField实例被创建在您的数据库为varchar列默认最⼤长度为 100 个字符。作为与其他字段,您可以更改使⽤的
max_length最⼤长度。
⼤多数⽹站在插⼊图⽚时⼀般都是这样处理的:
上传⼤尺⼨图时,⾃动⽣成⼀张缩略图;⽹页中插⼊缩略图,并把地址指向⼤尺⼨的图。
所以在Django中,我这样定义主要字段:
title = models.CharField(max_length = 120)
img = models.ImageField(upload_to = 'screenshots')
thumb = models.FilePathField(path = 'screenshots/thumb')
判断图⽚⼤⼩是否需要做缩略图,如果不需要,直接复制img.path到thumb,否则,⽣成⼀张缩略图(以test-thumb.jpg命名)保存在screenshots/thumb下。
在⽹页中插⼊图⽚时,就可以简单地⽤<a href="{% object.img.url %}" rel="external nofollow" ><img title="{% object.title %}" src="{% object.thumb %}" alt="{% object.title %}"></a>来表⽰了。object表⽰⼀个ScreenShot。
补充知识:django FileFIeld和ImageField 上传路径改写
我就废话不多说了,⼤家还是直接看代码吧!
def get_file_path(instance, filename):
return 'file/document/%s/%s/%s' % (de, de, filename)
class Document(models.Model):
title = models.CharField(max_length=50, blank=True, verbose_name="⽂档名", default="")
student = models.ForeignKey('accounts.Student', verbose_name="学⽣")
period = models.ForeignKey('systemconfig.Periods', verbose_name="阶段")
file = models.FileField(upload_to=get_file_path, verbose_name="⽂档", blank=True, null=True)
mark = models.SmallIntegerField(null=True, blank=True, verbose_name="标记")
create_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True)
class Meta:
verbose_name = "学⽣报告⽂档"
verbose_name_plural = "学⽣报告⽂档"
重点就是get_file_path
def get_file_path(instance, filename):
return 'file/document/%s/%s/%s' % (de, de, filename)
class Document(models.Model):
title = models.CharField(max_length=50, blank=True, verbose_name="⽂档名", default="")
student = models.ForeignKey('accounts.Student', verbose_name="学⽣")
period = models.ForeignKey('systemconfig.Periods', verbose_name="阶段")
file = models.FileField(upload_to=get_file_path, verbose_name="⽂档", blank=True, null=True)
mark = models.SmallIntegerField(null=True, blank=True, verbose_name="标记")
create_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True)
class Meta:
verbose_name = "学⽣报告⽂档"
verbose_name_plural = "学⽣报告⽂档"
以上这篇Django中FilePathField字段的⽤法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论