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 或其他网络服务器。