django 从不同目录获取文件 [未确认]
django get files from different directories [NOT CONFIRMED]
我有一个 django 应用程序(安装在 Debian 服务器上),可以上传文件。
传统上,它会加载到 site_media 中的文件夹中。
由于某些原因,(请不要问为什么,认为这是理所当然的)我必须将文件保存在不同的磁盘中。
另一个磁盘的路径是/disk/site_media
其他磁盘保存成功!
当我尝试通过单击打开文件时,我发现找不到文件。
我乐于接受想法!!!
这是我上传文件时的代码:
obj = form.save(commit=False)
obj.user_id = self.request.user.pk
obj.save()
initial_path = obj.file.path
print(initial_path)
new = settings.MEDIA_ROOT_NEW + obj.file.name
print(new)
#os.rename(initial_path,new)
shutil.move(initial_path, new)
我将文件上传到我的 EmployeeDoc class:
class EmployeeDoc(models.Model):
file = models.FileField('DocFile', upload_to='edocs/')
employee = models.ForeignKey(Employee , related_name='documents')
user = models.ForeignKey(User , related_name='employeedocs')
created_at = models.DateTimeField(auto_now_add=True,default=timezone.now)
update_at = models.DateTimeField(auto_now=True,default=timezone.now)
我通过在我的员工下编写的函数获取模板中的文件 class:
class Employee(models.Model):
name ...
last ...
def getDocuments(self):
return EmployeeDoc.objects.filter(employee_id=self.pk,del_f=0)
这是我在 settings.py 中的路径:
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'site_media/')
MEDIA_ROOT_NEW = '/disk/site_media/'
MEDIA_URL = '/site_media/'
在我的 urls.py 中,尽管我拥有所有其他网址:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
您正在 MEDIA_URL
url 上提供 MEDIA_ROOT
目录。这意味着来自 MEDIA_ROOT_NEW
的文件将无法在 MEDIA_URL
url.
上访问
如果您想提供来自 MEDIA_ROOT_NEW
的所有媒体文件,请更改行:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
到
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT_NEW)
如果您想在一个 URL 上同时提供两个目录,请考虑为此使用 nginx 或其他网络服务器。
我有一个 django 应用程序(安装在 Debian 服务器上),可以上传文件。
传统上,它会加载到 site_media 中的文件夹中。 由于某些原因,(请不要问为什么,认为这是理所当然的)我必须将文件保存在不同的磁盘中。
另一个磁盘的路径是/disk/site_media 其他磁盘保存成功! 当我尝试通过单击打开文件时,我发现找不到文件。
我乐于接受想法!!!
这是我上传文件时的代码:
obj = form.save(commit=False)
obj.user_id = self.request.user.pk
obj.save()
initial_path = obj.file.path
print(initial_path)
new = settings.MEDIA_ROOT_NEW + obj.file.name
print(new)
#os.rename(initial_path,new)
shutil.move(initial_path, new)
我将文件上传到我的 EmployeeDoc class:
class EmployeeDoc(models.Model):
file = models.FileField('DocFile', upload_to='edocs/')
employee = models.ForeignKey(Employee , related_name='documents')
user = models.ForeignKey(User , related_name='employeedocs')
created_at = models.DateTimeField(auto_now_add=True,default=timezone.now)
update_at = models.DateTimeField(auto_now=True,default=timezone.now)
我通过在我的员工下编写的函数获取模板中的文件 class:
class Employee(models.Model):
name ...
last ...
def getDocuments(self):
return EmployeeDoc.objects.filter(employee_id=self.pk,del_f=0)
这是我在 settings.py 中的路径:
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'site_media/')
MEDIA_ROOT_NEW = '/disk/site_media/'
MEDIA_URL = '/site_media/'
在我的 urls.py 中,尽管我拥有所有其他网址:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
您正在 MEDIA_URL
url 上提供 MEDIA_ROOT
目录。这意味着来自 MEDIA_ROOT_NEW
的文件将无法在 MEDIA_URL
url.
如果您想提供来自 MEDIA_ROOT_NEW
的所有媒体文件,请更改行:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
到
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT_NEW)
如果您想在一个 URL 上同时提供两个目录,请考虑为此使用 nginx 或其他网络服务器。