我在開發(fā)環(huán)境里訪問靜態(tài)文件總顯示404
奇怪的是,我在實際環(huán)境(一個云服務(wù)器)是可以正常訪問這些靜態(tài)文件的,
而且,我在本地訪問模板可以正常返回,但是訪問js/css/img等就不行
下面是我的一些配置信息
<!-- template 的設(shè)置 -->
<head>
<meta charset="UTF-8">
<title>...</title>
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'css/M_index.css' %}" />
</head>
<body>
...
<script src="{% static 'js/firstload.js' %}"></script>
<script src="{% static 'js/jquery-1.10.1.min.js' %}"></script>
<script src="{% static 'js/M_index.js' %}"></script>
</body>
# settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
if socket.gethostname() == 'chang':
STATIC_ROOT = "../static/"
STATIC_URL = '/static/'
STATICFILES_DIR = {
os.path.join(BASE_DIR, 'static'),
}
(注: 我已經(jīng)在INSTALLED_APPS添加了'django.contrib.staticfiles', 而且DEBUG已經(jīng)設(shè)為true)
# urls.py
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
# 當(dāng)我用"http://127.0.0.1:8000/admin/"訪問的時候,出現(xiàn)了以下報錯信息
[21/Jan/2018 12:32:50] "GET /admin/ HTTP/1.1" 200 1243
[21/Jan/2018 12:32:50] "GET /static/css/M_index.css HTTP/1.1" 404 1772
[21/Jan/2018 12:32:50] "GET /static/js/firstload.js HTTP/1.1" 404 1772
[21/Jan/2018 12:32:50] "GET /static/js/jquery-1.10.1.min.js HTTP/1.1" 404 1796
[21/Jan/2018 12:32:50] "GET /static/js/M_index.js HTTP/1.1" 404 1766
#這里是當(dāng)請求加載css的時候,控制臺記錄的一些記錄(請求, 返回頭什么的)
General:
Request URL:http://127.0.0.1:8000/static/css/M_index.css
Request Method:GET
Status Code:404 Not Found
Remote Address:127.0.0.1:8000
Referrer Policy:no-referrer-when-downgrade
Response Headers:
Content-Type:text/html
Date:Sun, 21 Jan 2018 04:32:50 GMT
Server:WSGIServer/0.1 Python/2.7.2
Request Headers:
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:no-cache
Connection:keep-alive
Cookie:csrftoken=XMZrfTiyLJ512OnmWOTcZJGkcZPxsM0d
Host:127.0.0.1:8000
Pragma:no-cache
Referer:http://127.0.0.1:8000/admin/
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36
# 這里有點奇怪, 我請求的是一個css文件, 但是他返回頭里卻寫著"text/html"
還有一點比較奇怪的是,我static目錄是"根目錄>static"這樣子的",可是還是出現(xiàn)""GET /static/js/M_index.js HTTP/1.1" 404"這樣的錯誤, 很費解
我曾查找資料,比如改為絕對路徑,添加/static/匹配url, 然后調(diào)用django.contrib.staticfiles.views.serve()這些都嘗試過不行,
如果大家有什么解決辦法, 請告訴我, 謝謝~
問題已經(jīng)解決, 有兩種解決辦法
1, 建立STATICFILES_DIRS[](注意是列表或者是元組,不是字典!), 把static的地址加入到里面, 同時注意不能包含STATIC_ROOT里面的地址, 否則會報錯(ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting),這樣在實際環(huán)境還是生產(chǎn)環(huán)境都能完美運行.(推薦)
2, 保持原有設(shè)置不變, 但是把static復(fù)制到應(yīng)用中的文件夾里面, 用于調(diào)試. 調(diào)試的時候模板調(diào)用的是應(yīng)用中文件夾的static, 那么修改的也應(yīng)該修改這個, 調(diào)試完畢再把它覆蓋到真正的static提交, (親身試驗過可行, 但是很麻煩, 每次提交都要先覆蓋, 在知道1這個答案之前我一直用這個方法)
希望能對你有幫助
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。