一、專案建立
-
1、使用
virtualenvwrapper
或pipenv
建立一個django
的虛擬環境,並安裝依賴包 -
2、使用命令建立一個專案
django-admin startproject [專案名字] 複製程式碼
二、django
中專案檔案的配置
這步驟不使用也可以,看個人,本人喜歡將全部的
app
放在一個目錄下,使用第三方的app
放在一個目錄下
-
1、專案中建立一個資料夾
apps
-
2、專案中建立一個資料夾
extra_apps
-
3、根據下圖方式將上面兩個建立的資料夾變成根目錄
-
4、在專案的
settings.py
中新增配置資訊import os import sys # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps')) 複製程式碼
-
5、使用命令建立
app
,並直接拖到apps
資料夾下python manage.py startapp [app名字] 複製程式碼
-
6、同理如果是
git
上下載的第三方原始碼就放到extra_apps
資料夾下
三、關於檢視與url
的關聯
在django
中有兩種模式來寫檢視
- 使用函式的方式(
FBV
模式) - 使用類的方式(
CBV
模式),本人更喜歡使用類的方式來建立檢視
下面介紹使用CBV
模式來實現檢視
-
1、建立一個
book
的app
並且在settings.py
中註冊 -
2、將
book
拖到apps
資料夾下 -
3、在
book
的app
目錄下建立一個urls.py
的檔案,用於存放當前檢視全部的url
-
4、在檢視類中建立幾個類
from django.http import HttpResponse from django.views import View class BookView(View): """ 圖書主頁檢視 """ def dispatch(self, request, *args, **kwargs): # dispatch這個函式可以不寫,檢視django原始碼就是從這個函式開始的 result = super().dispatch(request, *args, **kwargs) return result def get(self, request, *args, **kwargs): return HttpResponse('圖書首頁') def post(self, request, *args, **kwargs): pass class BookDetailView(View): """ 圖書詳情檢視 """ def get(self, request, *args, **kwargs): # http://localhost:8000/book/1/?name=hello print(request.GET.get('name', None)) print(args) # 可以獲取到url上定義的引數 print(kwargs) return HttpResponse('圖書詳情') def post(self, request, *args, **kwargs): pass 複製程式碼
-
5、在本
app
下的urls.py
中定義url
資訊from django.urls import path from . import views app_name = 'book' urlpatterns = [ path('', views.BookView.as_view(), name='book_index'), path('<int:book_id>/', views.BookDetailView.as_view(), name='book_detail') ] 複製程式碼
-
6、在主路由中引入當前
app
的urls.py
檔案from django.urls import path, include urlpatterns = [ path('', include('home.urls', namespace='home')), path('book/', include('book.urls', namespace='book')) ] 複製程式碼
四、配置時區(後面會有專題介紹)
在
settings.py
中配置(以上海時間為配置)大概在109行
TIME_ZONE = 'Asia/Shanghai' # 上海時區
USE_TZ = True
複製程式碼
五、配置中文顯示(主要是admin
中顯示)
在
settings.py
中配置
LANGUAGE_CODE = 'zh-hans' # 中文支援,django1.8以後支援;1.8以前是zh-cn
複製程式碼
六、資料庫的配置
-
1、預設資料庫是使用
sqlite
-
2、如果要使用
mysql
資料庫DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 資料庫引擎 'NAME': 'djangotest', #資料庫名稱 'USER': 'root', # 連結資料庫的使用者名稱 'PASSWORD': 'root', # 連結資料庫的密碼 'HOST': '127.0.0.1', # mysql伺服器的域名和ip地址 'PORT': 3306, # mysql的一個埠號,預設是3306 } } 複製程式碼
-
3、如果你是使用
pymysql
連線工具必須要在站點__init__.py
的檔案配置import pymysql pymysql.install_as_MySQLdb() 複製程式碼
-
4、使用
mongodb
資料庫DATABASES = { 'default': { 'ENGINE': None, } } from mongoengine import connect connect('資料庫名') 複製程式碼
七、模板的配置
如果是使用命令方式建立的專案,不會自己建立
templates
的資料夾,需要手動建立
-
1、手動建立一個資料夾
templates
-
2、在
settings.py
的TEMPLATES
下面配置模板的使用路徑'DIRS': [os.path.join(BASE_DIR,'templates' )] 複製程式碼
-
3、補充說明
'APP_DIRS': True,
的認識- 這句話的意思是說,如果在
templates
資料夾下沒找到模板會在已經安裝的app
下繼續查詢模板,如果沒有找到就報錯,有就渲染到頁面
- 這句話的意思是說,如果在
八、靜態檔案的配置
在開發過程中可能會使用到的
css
檔案、js
檔案、img
檔案我們統一歸到靜態檔案中
-
1、載入靜態的也是一個
app
,檢視app
中是否載入該元件INSTALLED_APPS = [ ... 'django.contrib.staticfiles', ] 複製程式碼
-
2、說明(靜態資料夾的命名是根據
settings.py
中STATIC_URL
一樣就可以)STATIC_URL = '/static/' 複製程式碼
-
3、在
settings.py
中配置靜態檔案地址STATICFILES_DIRS = ( 'static', ) 複製程式碼
-
4、將
static
變成django
內建標籤(這樣就不需要在每個html
頁面頭部{% load staticfiles %}
)# 在settings.py檔案中配置 TEMPLATES = [ { ... 'OPTIONS': { 'context_processors': [ ... ], 'builtins': ['django.templatetags.static'] }, }, ] 複製程式碼