我正在尝试将项目文件保存到媒体,然后在 url 中显示,到目前为止,我已经遵循了一些简单的技术来避免文件操作并将它们存储在媒体中我的setting.py文件->STATIC_ROOT = os.path.join(BASE_DIR, 'static')STATIC_URL = '/static/'MEDIA_ROOT = os.path.join(BASE_DIR, 'media')MEDIA_URL = '/media/'我的 models.py 文件模型字段->picture = models.ImageField(null=True, blank=True, upload_to = "photos")resume = models.FileField(null=True, blank=True, upload_to = "resume")然后它会正确存储并显示为媒体网址。我的 urls.py 文件->from django.contrib import adminfrom django.urls import path,includefrom django.conf.urls.static import staticfrom django.conf import settingsurlpatterns = [ path('admin/', admin.site.urls), path('api/v1/cand/',include("core.urls"))] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)主要问题发生在我查询简历 pdf 文件时。它找不到 BASE_DIRfrom django.conf import BASE_DIRurl = serializer.data["resume"]file_name = url.split("/")[-1]data=ResumeParser(os.path.join(BASE_DIR,"/media/resume/",file_name)).get_extracted_data()return Response({**serializer.data, "data": data}, status = status.HTTP_200_OK)虽然当我使用绝对路径时它有效-> url = serializer.data["resume"] file_name = url.split("/")[-1] data=ResumeParser("/home/riyad/Desktop/kalkedev/services/candidate","media/resume/",file_name).get_extracted_data() return Response({**serializer.data, "data": data}, status = status.HTTP_200_好的)这是一个 django 问题吗,因为我之前一直在处理这个 issur 并采取简单的方法(默认 base_dir)来存储文件。需要快速找到答案。
3 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
不,不是这样,我发布后查看它,我发布了错误的代码,它应该是 django.conf 导入设置。主要问题是它找不到设置。BASE_DIR 即使我正确导入它......它什么也不返回。
慕的地8271018
TA贡献1796条经验 获得超4个赞
实际上settings.BASE_DIR是同步的..你必须这样写路径才能使其异步
path = settings.BASE_DIR + "文件路径"
那么你可以将这个路径添加到任何函数中,除非直接添加settings.BASE_DIR是行不通的。
心有法竹
TA贡献1866条经验 获得超5个赞
BASE_DIR 在设置中,而不是 django.conf
from django.conf import settings settings.BASE_DIR
添加回答
举报
0/150
提交
取消