這篇博客介紹了如何搭建自己的第一個django專案, 并完善這個專案, 有不足之處還請諒解, 介紹如何創建一個專案, setting的配置講解,和mysql資料庫的配置以及資料庫的遷移操作,
工具: pycharm2020 <Django 從入門到 ‘放棄’ > 第二篇 沙漏在下雨
本專欄介紹了我是怎么從Django入門到`放棄`, 基本的有,復雜的也有,專案我會自己花錢去上培訓班分享給大家,一起學習吧! 這是我第一次出系列教程,不足之處,請多多指教, 一名大三備考研黨!
文章目錄
- 創建第一個專案(project):
- 1) manage.py檔案
- 2) __init__.py檔案
- 3) settings.py檔案
- 4) urls.py檔案
- 5) wsgi.py檔案
- 6) asgi.py檔案
- 運行你的django專案:
- manage.py 檔案命令:
- Setting 檔案講解配置:
- 1) BASE_DIR
- 2) SECRET_KEY
- 3) DEBUG
- 4) ALLOWED_HOSTS
- 5) INSTALLED_APPS
- 6) MIDDLEWARE
- 7) ROOT_URLCONF
- 8) TEMPLATES
- 9) WSGI_APPLICATION
- 10) DATABASES
- 11) AUTH_PASSWORD_VALIDATORS
- 12) LANGUAGE_CODE和TIME_ZONE
- 13) USE_118N和USE_L10N
- 14) USE_TZ=True
- 15) STATIC_URL= '/static/'
- django配置mysql資料庫:
- 資料庫的遷移:
創建第一個專案(project):
- 使用命令列, 或者使用pycharm 下方的
terminal

- 創建成功之后,打開檔案樹.

-
先忽略nowapp 這個專案app , 創建好了 打開子檔案夾 nowproject, 里面多了一些組態檔, 介紹如下:
1) manage.py檔案
一級子目錄中的 manage.py 檔案是管理 Django 專案的重要命令列工具,它主要用于啟動專案、創建應用和完成資料庫的遷移等,
2) init.py檔案
二級子目錄中的 init.py 檔案用于標識當前所在的目錄是一個 Python 包,如果在此檔案中,通過 import 匯入其他方法或者包會被 Django 自動識別,
3) settings.py檔案
settings.py 檔案是 Django 專案的重要組態檔,專案啟動時,settings.py 組態檔會被自動呼叫,而它定義的一些全域為 Django 運行提供引數,在此組態檔中也可以自定義一些變數,用于全域作用域的資料傳遞,
4) urls.py檔案
url.py 檔案用于記錄 Django 專案的 URL 映射關系,它屬于專案的基礎路由組態檔,路由系統就是在這個檔案中完成相應配置的,專案中的動態路徑必須先經過該檔案匹配,才能實作 Web 站點上資源的訪問功能,
5) wsgi.py檔案
wsgi.py 是 WSGI(Web Server Gateway Interface)服務器程式的入口檔案,主要用于啟動應用程式,它遵守 WSGI 協議并負責網路通訊部分的實作,只有在專案部署的時候才會用到它,
6) asgi.py檔案
asgi.py檔案時django專案的asgi配置, 它將可呼叫的ASGI公開為名為“ application”的模塊級變數,有關此檔案的更多資訊,請參見https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/
運行你的django專案:
在命令列里面輸入如下指令:
py manage.py runserver

成功啟動后,在該目錄下會生成 Django 自帶的資料庫檔案 db.sqlite3,這是 Django 默認自帶的輕量級資料庫,通過 http://127.0.0.1:8000 訪問創建好的專案,8000 是 Django 的默認埠號,最后如若想退出運行狀態,可以通過 CTRL+C 來終止,
點擊這個域名鏈接,成功創建如下:

這就代表你已經創建好了專案,并且成功的運行了它, 這個時候,你會發現命令列也在不斷的重繪條目, 這表示django一般都處于運行狀態,這樣在專案開發程序中就可以實時進行測驗或者除錯代碼,
如果想運行在其他埠號:
py manage.py runserver 8080
或者運行在局域網的其他電腦中:
py manage.py runserver 0.0.0.0:8080
manage.py 檔案命令:
在控制臺中我們輸入 py manage.py help 則會列印出來一些幫助資訊:
這里面的命令后續會使用到一些, 不要求全部掌握,
Type 'manage.py help ' for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser
[contenttypes]
remove_stale_contenttypes
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[sessions]
clearsessions
[staticfiles]
collectstatic
findstatic
runserver
Setting 檔案講解配置:
setting 檔案 是 Django 框架的重要組態檔,它定義的一些全域變數用來給 Django 框架傳遞引數,我們還可以根據自己的實際需求來修改這個檔案從而實作某些特定的要求,下面我們對這個組態檔進行詳細介紹,了解這個組態檔,是邁進 Django 世界的重要一步,
1) BASE_DIR
它用于系結當前專案 BookStore 所在的絕對路徑,專案中的所有的檔案都需要依賴此路徑,系結路徑的方法如下:
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
__file__是 Python 的語法,顯示當前檔案的位置,os.path.abspath(__file__) 方法回傳當前檔案的絕對路徑,
2) SECRET_KEY
這個變數的本質是一個加密的key,它一般配合加密演算法 Hash、MD5 一起使用,例如用戶密碼的加密或者建立會話時用到的 sessionid 都需要用到 SECRET_KEY ,在實際的開發作業中,一般將它保存在系統的環境變數中以確保加密key的安全,
3) DEBUG
用于配置 Django 專案的啟用模式,有兩種取值方式:
- DEBUG = True用于在開發環境中使用,屬于除錯模式,在專案的運行程序中會暴露一些錯誤資訊以方便除錯,
- DEBUG = False用于線上環境,表示不啟用除錯模式,
我們在撰寫代碼的時候,設定為True 就可以了,
4) ALLOWED_HOSTS
用于配置能夠訪問當前站點的域名(IP地址),當 DEBUG = False 時,必須填寫,有以下三種使用方法:
- [],空串列,表示只有1217.0.0.1,localhost能訪問本專案;
- [’*’],表示任何網路地址都能訪問到當前專案;
- [‘192.168.1.3’, ‘192.168.3.3’] 表示只有當前兩個主機能訪問當前專案,
提示:如果是在局域網,讓其它主機也能訪問此站點,應使用 ALLOWED_HOSTS=[’*’] 的方式,
5) INSTALLED_APPS
這個引數是指當前專案中用來安裝的應用(APP)的串列,Django 把默認自帶的應用放在這個串列里,比如 Admin 后臺應用、Auth 用戶管理系統等,前面我們也對這兩個模塊做了相應的介紹,在 Django 中把它們稱之為“應用”,
我們可以根據自己的專案需求對其進行增加或洗掉,比如公司要單獨開發一個后臺管理系統,就可以把第一項 admin 注釋掉,開發時自己撰寫的應用都必須在這個變數表中進行注冊才能生效,所以這個串列需要經常的改動,
比如我們這個專案中, 就要向里注冊應用,
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘你的應用’,
]
6) MIDDLEWARE
它用于注冊中間件,Django 默認加載了一些中間件,例如,用于處理會話的 SessionMiddleware , 處理訊息的MessageMiddleware等,同樣我們可以對這些中間件進行添加或者注釋,后面我們也可以撰寫自己的中間件擴展鉤子函式, 用于擴展,
7) ROOT_URLCONF
ROOT_URLCONF = 'nowproject.urls'
它指定了當前專案的根 URL,是 Django 路由系統的入口,
8) TEMPLATES
它用于指定模板的配置資訊,串列中每一元素都是一個字典,如下所示是 Django 默認自帶模板引擎:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], # 在這里我們可以設定自己的templates模板位置
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
9) WSGI_APPLICATION
WSGI_APPLICATION = 'BookStore.wsgi.application'
專案部署時,Django 的內置服務器將使用的 WSGI 應用程式物件的完整 Python 路徑,
10) DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
它用于指定資料庫配置資訊,這里默認配置的是 Django 自帶的 sqllite3 資料庫,Django 支持多種資料庫,在這個字典變數中更改資料庫配置,在后續章節我們將對 Mysql 資料庫配置進行講解,
11) AUTH_PASSWORD_VALIDATORS
這是一個支持插拔的密碼驗證器,且可以一次性配置多個,Django 通過這些內置組件來避免用戶設定的密碼等級不足的問題,
AUTH_PASSWORD_VALIDATORS = [
{ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', },
{ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', },
{ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', },
]
12) LANGUAGE_CODE和TIME_ZONE
分別代表語言配置項和當前服務端時區的配置項,我們常用的配置如下所示:
- LANGUAGE_CODE 取值是英文:‘en-us’ 或者中文:‘zh-Hans’;
- TIME_ZONE 取值是世界時區 ‘UTC’ 或中國時區 ‘Asia/Shanghai’,
所以我們這里需要更改 TIME_ZONE 設定為中國時區(zh-Hans), 并且更改LANGUAGE_CODE 設定為 中文(Asia/Shanghai), 不然資料庫存盤時間會少8個小時, 因為是東八區,
13) USE_118N和USE_L10N
專案開發完成后,可以選擇向不同國家的用戶提供服務,那么就需要支持國際化和本地化,USE_118N 和 USE_L10N 這兩個變數值表示是否需要開啟國際化和本地化功能,默認開啟的狀態,
提示:USE_I18N = True 與 USE_L10N = True 其的 I18N 指的是國際化英文縮寫,L10N 指的是本地化英文縮寫,
14) USE_TZ=True
它指對時區的處理方式,當設定為 True 的時候,存盤到資料庫的時間是世界時間 ‘UTC’, 當設定了TIME_ZONE 則USE_TZ 則需要設定 == False .
15) STATIC_URL= ‘/static/’
它指的是靜態資源的存放位置,靜態資源包括 CSS、JS、Images,比如我們要在專案中添加一些圖片,通常這些靜態圖片被存放在新建 (于app同級的目錄下)的 static 目錄下,這樣就實作了通過 STATIC_URL= ‘/static/’ 路徑對靜態資源的訪問, 這個后面我們會開一個章節講解.
django配置mysql資料庫:
首先確保你正確的安裝了mysql資料庫, 安裝成功, 在你的資料庫里面創建一個資料庫,
create database django;
然后進入setting中的 DATABASES 里面按照如下設定:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定使用的資料庫引擎,可以通過 Django.db.backends 來查看哪些資料庫可以與 Django 配合使用;
'NAME': 'django', # 資料庫名字
'USER': "root", # mysql 用戶名稱
'PASSWORD': '123123', # 資料庫的密碼
'HOST': "127.0.0.1", # 資料庫服務地址, 這里我們是測驗開發 填本地地址
'PORT': 3306, # mysql 對應的埠號
'default-character-set': "UTF8", # 設定編碼規則 utf8
}
}
然后需要安裝 pymysql 這個庫 pip install PyMySQL
最后在setting 同級的 __init__檔案中 加入一段代碼:
import pymysql
pymysql.install_as_MySQLdb()
這樣就完成了配置mysql資料庫了, 我們創建的資料就會正確的保存到本地mysql檔案中, 可以正確的查看,
資料庫的遷移:
當我們創建好了一個project的時候,cmd會列印一些錯誤警告, 表示我們沒有進行資料遷移, 遷移”就是把 Django 默認自帶應用的資料表遷移到我們自己的創建的資料庫里, 操作如下:
py manage.py migrate
運行之后,我們通過cmd列印MySQL資訊可以得到:

? 我們還需要使用一個命令, 因為如果現在的資料欄位發生了變化, 那么我們得到的就是錯誤的表單了,
? 使用命令
? python manage.py makemigrations
? 1) makegrations生成資料庫遷移檔案
? 當資料表更改后,我們首先執行 makemigrations 命令,然后 Django 會重新生成一個新的資料庫遷移檔案用來記錄表結構之間的差異,命名規則是對上一個 遷移檔案的序列號加1,如 0002_xxx、0003_xxx,
? 2) migrate執行資料庫遷移命令
? 之后,再次執行 migrate 命令讓新的遷移檔案生效并同步回資料庫,從而完成表結構定義的修改,對于 Django 內置的應用,資料庫遷移檔案已經生成好了, 所以直接使用 migrate 命令即可,
? 3) 完成資料庫遷移總結
? 每一次資料表更改后,都需要執行下面的兩個命令,它們的執行順序如下所示:
? python manage.py makemigrations
? python manag.py migrate
這些都是我們新建一個modle 表單 之后就要執行的命令的, 預防忘記,
以上就是關于django 如何創建一個專案, setting的配置講解,和資料庫的配置以及資料庫的遷移操作,
號加1,如 0002_xxx、0003_xxx,
? 2) migrate執行資料庫遷移命令
? 之后,再次執行 migrate 命令讓新的遷移檔案生效并同步回資料庫,從而完成表結構定義的修改,對于 Django 內置的應用,資料庫遷移檔案已經生成好了, 所以直接使用 migrate 命令即可,
? 3) 完成資料庫遷移總結
? 每一次資料表更改后,都需要執行下面的兩個命令,它們的執行順序如下所示:
? python manage.py makemigrations
? python manag.py migrate
這些都是我們新建一個modle 表單 之后就要執行的命令的, 預防忘記,
以上就是關于django 如何創建一個專案, setting的配置講解,和mysql資料庫的配置以及資料庫的遷移操作,
本專欄介紹了我是怎么從Django入門到
放棄, 基本的有,復雜的也有,專案我會自己花錢去上培訓班分享給大家,一起學習吧! 這是我第一次出系列教程,不足之處,請多多指教, 一名大三備考研黨!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/198727.html
標籤:AI
