我有一个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)
答案 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服务器。