我的代码生成数据帧。它们很大。我将它们保存为文件。为此,我创建了这个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
文件
有人有想法吗
提前谢谢
Django不提供存储在
MEDIA_ROOT
中的文件。您可以在开发过程中通过将以下内容添加到根url配置中来启用此功能:https://docs.djangoproject.com/en/3.0/howto/static-files/#serving-files-uploaded-by-a-user-during-development
在部署到生产服务器时,建议让其他服务器(apache或nginx)处理文件服务
相关问题 更多 >
编程相关推荐