Django模型当前链接未指向媒体根目录中的文件

2024-09-26 22:52:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码生成数据帧。它们很大。我将它们保存为文件。为此,我创建了这个Model

型号。py:

class TargetFiles(models.Model):
    owner = models.CharField(max_length=25)
    csv_file = models.FileField(blank=True, upload_to='target')
    file_name = models.CharField(max_length=255)

设置。py:

...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_URL = '/media/'
MEDIA_ROOT =  os.path.join(BASE_DIR, 'media')

mycode.py:

file_content = df.to_csv(index=False, encoding='utf-8')
csvname = 'target1.csv'
csf = ContentFile(file_content, csvname)
TargetFiles.objects.create(owner=self.user, csv_file=csf, file_name=csvname)

url.py(项目):

from django.urls import include, path
from django.contrib import admin

urlpatterns = [
    path('dataapp/', include('dataapp.urls')),
]

url.py(dataapp):

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='dataapp'),
    path('welcome/', views.welcome_dataapp, name='welcome_dataapp'),
    path('download/<str:file_name>', views.download, name='download'),
]

我不知道这是否是解决这个问题的最佳方法。这使我怀疑。问题是,我的代码正确地生成了文件,并将其保存在MEDIA_ROOT目录中。但是,当我转到管理视图并单击TargetFiles对象时,指向该文件的链接返回以下错误:

当前路径media/target/target1.csv与这些路径中的任何一个都不匹配

因为我不是Django专家,所以我想我搞错了。可能在settings.py或url.py中(在这个文件中,我没有写入任何对媒体的引用,可能这就是错误所在)

我已经读过这些帖子: Django - how to create a file and save it to a model's FileField? , Django: generate a CSV file and store it into FileField和这个assign resulting csv file to django model。但是我无法使管理员链接指向MEDIA_ROOT文件

有人有想法吗

提前谢谢


Tags: 文件csvtopathdjangonamefrompy
1条回答
网友
1楼 · 发布于 2024-09-26 22:52:09

Django不提供存储在MEDIA_ROOT中的文件。您可以在开发过程中通过将以下内容添加到根url配置中来启用此功能:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

https://docs.djangoproject.com/en/3.0/howto/static-files/#serving-files-uploaded-by-a-user-during-development

在部署到生产服务器时,建议让其他服务器(apache或nginx)处理文件服务

相关问题 更多 >

    热门问题