天天看點

Django 配置Django 配置

Django 配置

運作 django-admin.py startproject [project-name] 指令會生成一系列檔案,在Django 1.6版本以後的 settings.py 檔案中有以下語句:

1 2 3

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

import

os

BASE_DIR 

=

os.path.dirname(os.path.dirname(__file__))

這裡用到了python中一個神奇的變量 __file__ 這個變量可以擷取到目前檔案(包含這個代碼的檔案)的路徑。os.path.dirname(__file__) 得到檔案所在目錄,再來一個os.path.dirname()就是目錄的上一級,BASE_DIR 即為 項目 所在目錄。我們在後面的與目錄有關的變量都用它,這樣使得移植性更強。

1 2 3

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

DEBUG 

=

True

TEMPLATE_DEBUG 

=

True

DEBUG=True 時,如果出現 bug 便于我們看見問題所在,但是部署時最好不要讓使用者看見bug的詳情,可能一些不懷好心的人攻擊網站,造成不必要的麻煩。

1

ALLOWED_HOSTS 

=

[

'*.besttome.com'

,

'www.ziqiangxuetang.com'

]

ALLOWED_HOSTS 允許你設定哪些域名可以通路,即使在 Apache 或 Nginx 等中綁定了,這裡不允許的話,也是不能通路的。

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

1 2

STATIC_URL 

=

'/static/'

STATIC_ROOT 

=

os.path.join(BASE_DIR,

'static'

)

static 是靜态檔案所有目錄,比如 jquery.js, bootstrap.min.css 等檔案。

一般來說我們隻要把靜态檔案放在 APP 中的 static 目錄下,部署時用 python manage.py collectstatic 就可以把靜态檔案收集到(複制到) STATIC_ROOT 目錄,但是有時我們有一些共用的靜态檔案,這時候可以設定 STATICFILES_DIRS另外弄一個檔案夾,如下:

1 2 3 4

STATICFILES_DIRS 

=

(

os.path.join(BASE_DIR, 

"common_static"

),

'/var/www/static/'

,

)

這樣我們就可以把靜态檔案放在 common_static 和 /var/www/static/中了,Django也能找到它們。

1 2

MEDIA_URL 

=

'/media/'

MEDIA_ROOT 

=

os.path.join(BASE_DIR,

'media'

)

media檔案夾用來存放使用者上傳的檔案,與權限有關,詳情見  Django 靜态檔案 和   Django 部署

有時候有一些模闆不是屬于app的,比如 baidutongji.html, share.html等,

Django 1.5 - Django 1.7

1 2 3 4 5

TEMPLATE_DIRS 

=

(

os.path.join(BASE_DIR, 

'templates'

).replace(

'\\', '

/

'),

os.path.join(BASE_DIR, 

'templates2'

).replace(

'\\', '

/

'),

# ...

)

Django 1.8 及以上版本

1 2 3 4 5 6 7 8 9

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 檔案夾中了。