Django介紹
Django
框架是PythonWeb
三大主流框架之一,以其功能強大全面而受到眾多開發者追捧,現如今Django
已經更新到3
版本,但是並不推薦使用,更多建議使用1
版本。
Django版本 | Python版本 |
---|---|
1.11 | 2.7、3.4、3.5、3.6、3.7(在1.11.17中新增) |
2.0 | 3.4、3.5、3.6、3.7 |
2.1 | 3.5、3.6、3.7 |
2.2 | 3.5、3.6、3.7、3.8(在2.2.8中新增) |
3.0、3.1 | 3.6、3.7、3.8 |
Django安裝
使用pip install django==1.11.11
安裝Django
當下載完成後,可以使用django-admin
來檢視是否安裝成功
C:\Users\雲崖先生>django-admin
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).
常用命令
第一次接觸Django
,這裡有一些常用的CMD
命令
基本命令 | 解釋說明 |
---|---|
django-admin startproject 專案名稱 | 建立一個Django專案 |
python manage.py startapp 應用名稱 | 建立一個APP |
python manage.py runserver ip地址 port號 | 執行Django專案,如不指定IP與PORT預設為127.0.0.1與8000 |
python manage.py makemigrations | 建立資料庫的py檔案 |
python manage.py migrate | 將生成的py檔案應用到資料庫 |
python manage.py flush | 資料庫中資料全部清除,只留下表 |
python manage.py createsuperuser | 建立管理員使用者,密碼(郵箱可以留空) |
python manage.py changepassword 使用者名稱 | 修改管理員使用者密碼 |
注意事項
使用Django
時,有以下4條建議
1.計算機名稱不能包含中文
2.
IDE
中一個視窗只開一個專案3.專案中所有資料夾均不要使用中文
4.
Python
直譯器請按照與之相對的Django
版本進行選擇,我這裡使用Python3.6.6
目錄介紹
接下來我們使用命令列建立出一個新的Django
專案。
django-admin startproject Perfect
然後再新建一個APP
,在Django
中每一個 APP
都相當於一個功能的集合,如有處理學生相關的業務就建立一個名為student
的APP
,老師相關的業務就建立一個名為teacher
的APP
。
python manage.py startapp app01 # 注意在此之前要cd進專案根目錄
目錄如下:
-- PERFECT 專案資料夾
-- app01 應用資料夾
-- migrations.py 資料庫遷徙檔案
-- admin.py django後臺管理
-- apps.py 註冊相關
-- models.py 資料庫相關(ORM類)
-- tests.py 測試檔案
-- views.py 檢視相關函式
-- Perfect 專案全域性資料夾
-- settings.py 全域性配置檔案
-- urls.py 路由檢視關係
-- wsgi.py wsgiref模組(Django基於該模組)
-- manage.py 入口檔案
-- sqlite3 自帶微型資料庫(可有可無)
這個時候我們應該做一件事,在專案根目錄下新建一個templates
資料夾,用於存放HTML
文件。
(如果你是使用Pycharm
進行建立Django
專案可忽略這一步)
配置檔案
開啟專案全域性資料夾下的settings.py
,認識一下各個元件及其功能。
"""
Django settings for Perfect project.
Generated by 'django-admin startproject' using Django 1.11.11.
For more information on this file, see
https://docs.djangoproject.com/en/1.11/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.11/ref/settings/
"""
import os
# 像這樣在專案內部構建路徑:os.path.join(BASE_DIR,...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 快速啟動開發設定-不適合生產
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
# SESSION相關的金鑰,上線之後一定要保密
SECRET_KEY = 'm00e=*1gwly+6$&_g=tk&rd)lu8p-v_)1k(y&@7p_xn663$ph#'
DEBUG = True # DEBUG資訊,會給提示,上線後改為False即可
ALLOWED_HOSTS = [] # 允許訪問的主機,上線後改為 ["*"]
# 註冊的APP,新建一個APP後需要進行手動配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# 中介軟體,新手玩家請註釋掉 'django.middleware.csrf.CsrfViewMiddleware',
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'Perfect.urls'
# HTML檔案存放路徑配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
]
WSGI_APPLICATION = 'Perfect.wsgi.application'
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
# 專案指定用的資料庫,可以自行修改。預設使用sqlite3
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
# 認證相關
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/
LANGUAGE_CODE = 'en-us' # 語言
TIME_ZONE = 'UTC' # 時區
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
# 靜態檔案,尤其重要
STATIC_URL = '/static/'
手動配置
好了,在建立完APP
後需要在配置檔案中進行一些手動配置,分別是註冊APP
,拼接HTML
文件路徑,這兩個是必須的。此外還可選擇性對csrf
驗證中介軟體進行註釋,以及配置資料庫連結,配置靜態檔案等等。
這些都放在後面會說,後面會單獨開一章settings
的文章來具體寫各個部分的用途。
注意:如果使用
Pycharm
進行建立可忽略註冊APP
與拼接HTML
文件路徑,這些Pycharm
都會幫你自動做好,但是還是建議你看一眼。
註冊APP
註冊APP
非常簡單,只需要在配置檔案中找到下面的位置新增上上下面一條資訊即可。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
]
也可以進行簡寫
'app01',
HTML路徑
拼接HTML
文件路徑也是在配置檔案中新增。
以下示例中templates
是我對存放HTML
文件的資料夾取的名字,推薦使用這個名字。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,"templates")], # 在這裡新增上 os.path.join(BASE_DIR,"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',
],
},
},
]
啟動Django
上面的基礎工作做完之後,可以嘗試啟動一下Django
服務了,但是為了體現效果這裡還是超出範疇的寫一點東西。
返回一個簡單的登入頁面吧,這裡不涉及資料庫,靜態檔案等操作,所以你要做的就只有3步
1.配置路由,
2.配置一個檢視函式,
3.寫一個頁面
配置路由
配置路由的作用在於對不同的請求路徑進行處理,返回不同的頁面,這裡面其實也有很多知識點,先不涉及做個簡單的。
在專案全域性資料夾下,開啟urls.py
,匯入一下app01
的views.py
,再插入一條程式碼。
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r"^login/",views.login), # 新增程式碼
]
編寫函式
現在就可以做一下app01
下的views.py
中的內容了,由於路由裡對於http://127.0.0.1:8000/login
的請求處理函式是login
,所以我們需要寫一個login
函式來進行處理。
from django.shortcuts import render
# Create your views here.
def login(request):
return render(request,"login.html") # 必須返回request
頁面編寫
上面的請求處理函式返回了一個login.html
,這裡其實就是返回的templates
中的HTML
文件,可惜我們現在還沒有login.html
,所以新建一個即可。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
list-style: none;
}
body {
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
body main form{
padding: 5px;
border: #ddd solid 1px;
background: #eee;
}
body main form p{
margin: 10px;
}
</style>
</head>
<body>
<main>
<form action="#">
<p><input type="text" name="username" placeholder="請輸入您的使用者名稱"></p>
<p><input type="password" name="password" placeholder="請輸入您的密碼"></p>
<p><button type="submit" disabled>提交</button></p>
</form>
</main>
</body>
</html>
結果測試
現在將開啟Django
服務進行測試操作
python manage.py runserver
看下圖,已經成功到訪問到了頁面,其實所有的Web
框架流程無非就是解析請求資源,處理資料,返回HTML
文件這三步驟。