Django部署到服務器后無法獲取到靜態(tài)元素 The requested resource was not found on this server(問題及解決方案)
問題描述
寫了一個Django項目,部署到云主機后,訪問發(fā)現(xiàn)圖片無法訪問,報錯The requested resource was not found on this server
圖片是一個詞云圖,根據(jù)爬蟲爬取的信息生成的,根據(jù)爬取的信息會改變,所以沒有把圖片放在nginx中,而是直接獲取Django的圖片
原因分析:
直接原因是因為發(fā)布到服務器,將DEBUG設置成False
根本原因是,DEBUG模式下,Django本身相當于一個liveServer,默認可以加載靜態(tài)元素,我們可以將靜態(tài)元素放入一個目錄,配置一個URL 就可以獲取
代碼:
# settings.py STATIC_URL = "static/" import os STATIC_ROOT = ( os.path.join(BASE_DIR, 'app1/static') ) STATICFILES_DIRS = ( # 收集靜態(tài)元素,保存到項目同級別目錄static下 os.path.join(BASE_DIR, 'static'), )
settings.py下三個配置項:
STATIC_URL 配置的請求靜態(tài)元素的URL,默認是static,比如要訪問1.png,訪問地址就是http://xxx.xxx.xxx.xxx/static/1.png
STATIC_ROOT配置的靜態(tài)元素的存放的路徑,也就是1.png存放的路徑。另外,當項目部署時,使用python manage.py collectstatic
將所有靜態(tài)元素保存在此路徑
STATICFILES_DIRS這個配置不影響訪問,可以理解是一個公共路徑,可以將多個app的靜態(tài)元素保存在這個路徑,Django會優(yōu)先查找此路徑,再查找app下的STATIC_ROOT
當DEBUG=False時,可以Django只是一個后端服務器,不再提供靜態(tài)元素展示,所以訪問靜態(tài)元素時就會報錯The requested resource was not found on this server
解決方案:
將靜態(tài)元素也通過url路由的方式暴露出來,通過路由方式訪問
也就是Django提供的內置視圖
官網(wǎng):https://docs.djangoproject.com/zh-hans/4.1/ref/views/
# settings.py STATIC_ROOT = ( os.path.join(BASE_DIR, 'app1/static') ) # urls.py from django.urls import path, include, re_path from django.conf import settings from django.views.static import serve urlpatterns = [ path("admin/", admin.site.urls), path("largescreen/", include("carlargescreen.urls")), re_path(r'^images/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT }), ]
訪問http://xxx.xxx.xxx.xxx/images/1.png ,就會訪問到app1/static/1.png
到此這篇關于Django部署到服務器后無法獲取到靜態(tài)元素 The requested resource was not found on this server的文章就介紹到這了,更多相關Django部署到服務器無法獲取到靜態(tài)元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python使用tkinter實現(xiàn)透明窗體上繪制隨機出現(xiàn)的小球(實例代碼)
今天教大家怎么實現(xiàn)Tkinter透明窗體,在上篇文章給大家介紹過透明窗體上繪制小球,今天接著通過實例代碼給大家分享python使用tkinter實現(xiàn)透明窗體上繪制隨機出現(xiàn)的小球的實例代碼,感興趣的朋友跟隨小編一起看看吧2021-05-05Python人工智能之路 jieba gensim 最好別分家之最簡單的相似度實現(xiàn)
這篇文章主要介紹了Python人工智能之路 jieba gensim 最好別分家之最簡單的相似度實現(xiàn) ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08tensorflow使用神經(jīng)網(wǎng)絡實現(xiàn)mnist分類
這篇文章主要為大家詳細介紹了tensorflow使用神經(jīng)網(wǎng)絡實現(xiàn)mnist分類,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09Python 利用scrapy爬蟲通過短短50行代碼下載整站短視頻
近日,有朋友向我求助一件小事兒,他在一個短視頻app上看到一個好玩兒的段子,想下載下來,可死活找不到下載的方法。經(jīng)過我的一番研究才找到解決方法,下面小編給大家分享Python 利用scrapy爬蟲通過短短50行代碼下載整站短視頻的方法,感興趣的朋友一起看看吧2018-10-10使用python把Excel中的數(shù)據(jù)在頁面中可視化
最近學習數(shù)據(jù)分析,感覺Python做數(shù)據(jù)分析真的好用,下面這篇文章主要給大家介紹了關于如何使用python把Excel中的數(shù)據(jù)在頁面中可視化的相關資料,需要的朋友可以參考下2022-03-03