如何在 Django 媒体文件中创建目录(最佳方式)?
How to create directory in django media file (best way)?
我想将下载的图像保存到这样的路径:media/images/[user.pk]/ 直接从 urllib 库的 urlretrieve 中保存是可能的吗?最优雅的方法是什么?
这是使用的代码片段:
这里我使用 urlretrieve,路径如下.../media/images/[user.pk]/[filename.jpg]
file_path, header = urlretrieve(image_url, os.path.join(
MEDIA_ROOT, get_image_path(
self, 'profile_image_'+str(
datetime.utcnow().strftime("%Y%m%d_%H%M"))+'.jpg
这里是returns想要的文件名
路径的定义函数
def get_image_path(instance, filename):
return os.path.join('images', str(instance.pk), filename)
当我 运行 由于文件不存在而出现错误:
/rest/oauth2/google 处的 FileNotFoundError
[Errno 2] 没有这样的文件或目录:'C:\xampp\htdocs\BookProjectFresh\media\images\profile_image_20160723_0801.jpg'
我知道我可以通过首先将文件加载到临时文件夹然后从那里加载并放入 django 模型来实现这一点,如果它不存在它会自动创建文件路径,但是我有 2 个文件具有相同内容的电脑。或者是使用 os.path.makedirs 的最佳方式?如果您知道任何其他方式,请分享它。
我解决了这样一个问题:
def save_image_from_url(self, image_url):
if self.profile_image_url != image_url or not os.path.isfile(self.profile_image.path):
if not os.path.exists(get_image_path(self, os.path.join(MEDIA_ROOT, get_image_path(
self, '')))):
os.makedirs(get_image_path(self, os.path.join(MEDIA_ROOT, get_image_path(
self, ''))))
self.profile_image_url = image_url
file_path, header = urlretrieve(image_url, os.path.join(MEDIA_ROOT, get_image_path(
self, 'profile_image_'+str(datetime.utcnow().strftime("%Y%m%d_%H%M"))+'.jpg')))
self.profile_image = file_path
self.save()
我想将下载的图像保存到这样的路径:media/images/[user.pk]/ 直接从 urllib 库的 urlretrieve 中保存是可能的吗?最优雅的方法是什么?
这是使用的代码片段:
这里我使用 urlretrieve,路径如下.../media/images/[user.pk]/[filename.jpg]
file_path, header = urlretrieve(image_url, os.path.join( MEDIA_ROOT, get_image_path( self, 'profile_image_'+str( datetime.utcnow().strftime("%Y%m%d_%H%M"))+'.jpg
这里是returns想要的文件名
路径的定义函数def get_image_path(instance, filename): return os.path.join('images', str(instance.pk), filename)
当我 运行 由于文件不存在而出现错误:
/rest/oauth2/google 处的 FileNotFoundError [Errno 2] 没有这样的文件或目录:'C:\xampp\htdocs\BookProjectFresh\media\images\profile_image_20160723_0801.jpg'
我知道我可以通过首先将文件加载到临时文件夹然后从那里加载并放入 django 模型来实现这一点,如果它不存在它会自动创建文件路径,但是我有 2 个文件具有相同内容的电脑。或者是使用 os.path.makedirs 的最佳方式?如果您知道任何其他方式,请分享它。
我解决了这样一个问题:
def save_image_from_url(self, image_url):
if self.profile_image_url != image_url or not os.path.isfile(self.profile_image.path):
if not os.path.exists(get_image_path(self, os.path.join(MEDIA_ROOT, get_image_path(
self, '')))):
os.makedirs(get_image_path(self, os.path.join(MEDIA_ROOT, get_image_path(
self, ''))))
self.profile_image_url = image_url
file_path, header = urlretrieve(image_url, os.path.join(MEDIA_ROOT, get_image_path(
self, 'profile_image_'+str(datetime.utcnow().strftime("%Y%m%d_%H%M"))+'.jpg')))
self.profile_image = file_path
self.save()