Django-配置、靜態檔案與路由
阿新 • • 發佈:2018-11-28
-----配置檔案
1、BASE_DIR
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
2、DEBUG
除錯模式,建立工程後初始值為True,即預設工作在除錯模式下
部署線上執行的Django不要執行在調式模式下,記得修改DEBUG=False。
3、本地語言與時區
LANGUAGE_CODE = 'en-us' # 語言
TIME_ZONE = 'UTC' # 時區
-----
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
-----靜態檔案
STATICFILES_DIRS 存放查詢靜態檔案的目錄
STATIC_URL 訪問靜態檔案的URL字首
1、 在專案根目錄下建立static_files目錄來儲存靜態檔案
2、 在demo/settings.py中修改靜態檔案的兩個引數為
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_files'),
]
3、 此時在static_files新增的任何靜態檔案都可以使用網址 /static/檔案在static_files中的路徑 來訪問了
例如,我們向static_files目錄中新增一個index.html檔案,在瀏覽器中就可以使用127.0.0.1:8000/static/index.html來訪問。
或者我們在static_files目錄中添加了一個子目錄和檔案goods/detail.html,在瀏覽器中就可以使用127.0.0.1:8000/static/goods/detail.html來訪問。
注意: Django 僅在除錯模式下(DEBUG=True)能對外提供靜態檔案。
當DEBUG=False工作在生產模式時,Django不再對外提供靜態檔案,需要是用collectstatic命令來收集靜態檔案並交由其他靜態檔案伺服器來提供。
-----路由說明
1、路由定義位置
from django.conf.urls import url
from django.contrib import admin
import users.views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^users/index/$', users.views.index)
]
2、路由解析順序
Django在接收到一個請求時,從主路由檔案中的urlpatterns列表中以由上至下的順序查詢對應路由規則,如果發現規則為include包含,則再進入被包含的urls中的urlpatterns列表由上至下進行查詢。
urlpatterns = [
url(r'^say', views.say),
url(r'^sayhello', views.sayhello),
]
3、路由命名與reverse反解析
3-1 路由命名
3-1-1: 在使用include函式定義路由時,可以使用namespace引數定義路由的名稱空間
url(r'^users/', include('users.urls', namespace='users')),
3-1-2: 在定義普通路由時,可以使用name引數指明路由的名字
urlpatterns = [
url(r'^index/$', views.index, name='index'),
url(r'^say', views.say, name='say'),
]
3-2:reverse反解析
對於未指明namespace的,reverse(路由name)
對於指明namespace的,reverse(名稱空間namespace:路由name)
from django.core.urlresolvers import reverse # 注意導包路徑
def index(request):
return HttpResponse("hello the world!")
def say(request):
url = reverse('users:index') # 返回 /users/index/
print(url)
return HttpResponse('say')
4、路徑結尾斜線/的說明
urlpatterns = [
url(r'^index/$', views.index, name='index'),
]
-----App應用配置
1、 在每個應用目錄中都包含了apps.py檔案,用於儲存該應用的相關資訊
# 在建立應用時,Django會向apps.py檔案中寫入一個該應用的配置類,如
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
我們將此類新增到工程settings.py中的INSTALLED_APPS列表中,表明註冊安裝具備此配置屬性的應用
2、
AppConfig.name 屬性表示這個配置類是載入到哪個應用的,每個配置類必須包含此屬性,預設自動生成。
AppConfig.verbose_name 屬性用於設定該應用的直觀可讀的名字,此名字在Django提供的Admin管理站點中會顯示,如
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
verbose_name = '使用者管理'