看我多久能學會Django(八):Django配置和靜態(tài)文件

這一篇耸序,我們看下setting.py文件。

配置文件

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

這里用到了python中的一個變量 file 這個變量可以獲取當前文件(包括這個代碼的文件)的路徑鲁猩。
os.path.dirname(file)得到文件所在目錄坎怪,再一個os.path.dirname()就是目錄的上一級,BASE_DIR即為項目所在目錄廓握。我們在后面的與目錄有關的變量都用它芋忿,這樣使得移植性更強。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

當DEBUG = True 時疾棵,如果出現(xiàn) bug 便于我們看見問題所在,但是部署時最好不要讓用戶看見bug的詳情痹仙。

ALLOWED_HOSTS = []

ALLOWED_HOSTS 允許我們設置哪些域名可以訪問是尔,即使在Apache或Nginx等中綁定了,這里不允許的話开仰,也是不能訪問的拟枚。

注意: 當 DEBUG=False 時,這個為必填項众弓,如果不想輸入恩溅,可以用 ALLOW_HOSTS = ['*'] 來允許所有的。

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = '/static/'

static是靜態(tài)文件所有目錄谓娃,比如jquery.js, bootstrap.min.css 等文件脚乡。
一般來說我們只要把靜態(tài)文件放在 APP 中的 static 目錄下,部署時用 python manage.py collectstatic 就可以把靜態(tài)文件收集到(復制到) STATIC_ROOT 目錄滨达,但是有時我們有一些共用的靜態(tài)文件奶稠,這時候可以設置 STATICFILES_DIRS 另外弄一個文件夾,如下:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "common_static"),
    '/var/www/static/',
)

這樣我們就可以把靜態(tài)文件放在 common_static 和 /var/www/static/中了捡遍,Django也能找到它們锌订。

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

media文件夾用來存放用戶上傳的文件,與權限有關画株。

有時候有一些模板不是屬于app的辆飘,比如 baidu#html, share.html等。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR,'templates').replace('\\', '/'),
            os.path.join(BASE_DIR,'templates2').replace('\\', '/'),
        ],
        'APP_DIRS': True,
]

這樣 就可以把模板文件放在 templates 和 templates2 文件夾中了谓传。

靜態(tài)文件

靜態(tài)文件是指網站中的js蜈项,css,圖片良拼,視頻等文件

setting.py靜態(tài)文件相關實例代碼說明:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = '/static/'

#當運行 python manage.py collectstatic 的時候
#STATIC_ROOT文件夾是用來將所有STATICRTFILES_DIRS中所有文件夾中的文件战得,以及各app中static中的文件都復制過來
#把這些文件放在一起,是為了用apache等部署的時候方便使用
STATIC_ROOT = os.path.join(BASE_DIR,'collected_static') 

#其它存放靜態(tài)文件的文件夾庸推,可以用來存放項目中共用的靜態(tài)文件常侦,里面不能包含STATIC_ROOT
#如果不想使用STATICFILES_DIRS 可以不用浇冰,都放在app里的static中也可以
STATICFILES_DIRS=(
    os.path.join(BASE_DIR,"common_static"),
     '/path/to/others/static/',  # 用不到的時候可以不寫這一行
)

# 這個是默認設置,Django 默認會在 STATICFILES_DIRS中的文件夾 和 各app下的static文件夾中找文件
# 注意有先后順序聋亡,找到了就不再繼續(xù)找了
STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

靜態(tài)文件放在對應的app下的static文件夾中或者STATICFILES_DIRS中的文件夾中肘习。

當DEBUG=True時,Django 就能自動找到放在里面的靜態(tài)文件坡倔。(Django 通過 STATICFILES_FINDERS 中的“查找器”漂佩,找到符合的就停下來,尋找的過程 類似于 Python 中使用 import xxx 時罪塔,找 xxx 這個包的過程)投蝉。

以自學堂的例子為栗子:

dj18static
├── blog
│   ├── __init__.py
│   ├── admin.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── static # 應用 blog 下的 static, 默認會找這個文件夾
│   │   └── 【zqxt.png】
│   ├── tests.py
│   │
│   └── views.py
├── common_static # 已經添加到了 STATICFILES_DIRS 的文件夾
│   └── js
│       └── 【jquery.js】
│
├── dj18static
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

當 settings.py 中的 DEBUG = True 時,打開開發(fā)服務器 python manage.py runserver 直接訪問 /static/zqxt.png 就可以找到這個靜態(tài)文件征堪。

也可以在settings.py中指定所有app共用的靜態(tài)文件瘩缆,比如jquery.js等。

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "common_static"),
)

把 jquery.js 放在 common_static/js/ 下佃蚜,這樣就可以 在 /static/js/jquery.js 中訪問到它庸娱!


這里暈了好久,這里有三個文件夾谐算,一是app下面的static熟尉,二是共用文件夾common_static,三是在運行python manage.py collectstatic 之后生成的collected_static洲脂。對于前兩個斤儿,我們在公用文件夾下的靜態(tài)文件,可以直接被app訪問腮考,只需將文件夾名雇毫,替換為static。


如果想為靜態(tài)文件分配多個不同的網址時:
踩蔚。棚放。。馅闽。飘蚯。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末福也,一起剝皮案震驚了整個濱河市局骤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌暴凑,老刑警劉巖峦甩,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡凯傲,警方通過查閱死者的電腦和手機犬辰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冰单,“玉大人幌缝,你說我怎么就攤上這事〗肭罚” “怎么了涵卵?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荒叼。 經常有香客問我轿偎,道長,這世上最難降的妖魔是什么被廓? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任贴硫,我火速辦了婚禮,結果婚禮上伊者,老公的妹妹穿的比我還像新娘。我一直安慰自己间护,他們只是感情好亦渗,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汁尺,像睡著了一般法精。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痴突,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天搂蜓,我揣著相機與錄音,去河邊找鬼辽装。 笑死帮碰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拾积。 我是一名探鬼主播殉挽,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拓巧!你這毒婦竟也來了斯碌?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤肛度,失蹤者是張志新(化名)和其女友劉穎傻唾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體承耿,經...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡冠骄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年伪煤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猴抹。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡带族,死狀恐怖,靈堂內的尸體忽然破棺而出蟀给,到底是詐尸還是另有隱情蝙砌,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布跋理,位于F島的核電站择克,受9級特大地震影響,放射性物質發(fā)生泄漏前普。R本人自食惡果不足惜肚邢,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拭卿。 院中可真熱鬧骡湖,春花似錦、人聲如沸峻厚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惠桃。三九已至浦夷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辜王,已是汗流浹背劈狐。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呐馆,地道東北人肥缔。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像汹来,于是被迫代替她去往敵國和親辫继。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容

  • 項目部署到阿里云(nginx+uwsgi)上后俗慈,靜態(tài)文件加載沒有問題姑宽。但是在本地,使用開發(fā)服務器闺阱,卻始終加載不成功...
    蘭山小亭閱讀 5,619評論 0 9
  • 處理靜態(tài)文件炮车,尤其是在開發(fā)時,是一件很頭疼的事情。在這篇文章中瘦穆,我們將會討論一些設置纪隙,目錄結構和他們之間的相互影響...
    51reboot閱讀 1,675評論 0 1
  • 22年12月更新:個人網站關停,如果仍舊對舊教程有興趣參考 Github 的markdown內容[https://...
    tangyefei閱讀 35,180評論 22 257
  • (一)扛或、啟動服務器 (二)绵咱、創(chuàng)建數(shù)據庫表 或 更改數(shù)據庫表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星閱讀 5,656評論 0 17
  • 銘記,是為了忘記悲伶。 就如同生存,是為了死去住涉。 學會忘記與死去麸锉。 也就學會了銘記與生命舆声。 有時候的銘記花沉,是別人的忘記...
    大海波濤閱讀 252評論 0 0