django从不同的目录中获取文件[NOT CONFIRMED]

时间:2016-10-20 09:26:32

标签: python django readfile

我有一个django应用程序(安装在Debian服务器上),其中有文件上传。

传统上,它在site_media的文件夹中进行ulpload。 出于某种原因,(请不要问为什么,理所当然)我必须将文件保存在不同的磁盘中。

另一个磁盘的路径是/ 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 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)

我使用在Employee类下编写的函数获取模板中的文件:

   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)

1 个答案:

答案 0 :(得分:0)

您正在MEDIA_ROOT网址上提供MEDIA_URL目录。这意味着MEDIA_ROOT_NEW网址无法访问MEDIA_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或其他Web服务器。