我正在嘗試將項目文件保存到媒體,然后在 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
提交
取消