目錄
- 1.Django介紹
- 1.2 MVC模式說明
- 1.3 Django的MVT
- 1.4 Django配置順序
- 1. 創建Django專案
- 2.創建Django子應用
- 3. 注冊安裝子應用
- 4. 使用Django進行資料庫開發
- 4.1. 定義模型類
- 4.2. 模型遷移 (建表)
- 5.站點管理
- 5.1.管理界面本地化
- 5.2 創建管理員
- 6.視圖和URL
- 6.1. 定義視圖函式
- 6.2. 配置URLconf
- 7.模板
- 7.1 模板使用步驟
- 7.2創建模板
- 7.3設定模板查找路徑
- 7.4.模板接收視圖傳入的資料
- 7.5.模板處理資料
- 7.6. 查看模板處理資料成果
- 8.資料庫資料在網頁展示
- 8.1創建視圖
- 8.2.創建模板
- 8.3.配置URLconf
- 9.組態檔和靜態檔案
- 9.1 setting組態檔
- 9.2 靜態檔案
- 9.3App應用配置
環境:Ubuntu20.04、 Django1.11.1
1.Django介紹
Django的主要目的是簡便、快速的開發資料庫驅動的網站,它強調代碼復用,多個組件可以很方便的以"插件"形式服務于整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包,這使得Django具有很強的可擴展性,它還強調快速開發和DRY(DoNotRepeatYourself)原則,
1.1 重量級框架
對比Flask框架,Django原生提供了眾多的功能組件,讓開發更簡便快速,
- 提供專案工程管理的自動化腳本工具
- 資料庫ORM支持(物件關系映射,英語:Object Relational Mapping)
- 模板
- 表單
- Admin管理站點
- 檔案管理
- 認證權限
- session機制
- 快取
1.2 MVC模式說明
- M全拼為Model,主要封裝對資料庫層的訪問,對資料庫中的資料進行增、刪、改、查操作,
- V全拼為View,用于封裝結果,生成頁面展示的html內容,
- C全拼為Controller,用于接收請求,處理業務邏輯,與Model和View互動,回傳結果,
1.3 Django的MVT
- M全拼為Model,與MVC中的M功能相同,負責和資料庫互動,進行資料處理,
- V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,回傳應答,
- T全拼為Template,與MVC中的V功能相同,負責封裝構造要回傳的html,
1.4 Django配置順序
bookmanager: 為工程目錄;
book: 為應用目錄;
bookmanager/settings.py -->> bookmanager/urls.py -->>
book/urls.py -->> book/views.py -->> templates/book/index.html
-->> book/models.py -->> 資料庫
1. 創建Django專案
django-admin startproject bookmanager
執行后,會多出一個新目錄名為bookmanager,此即為新創建的工程目錄,
- 與專案同名的目錄,此處為bookmanager,
- settings.py是專案的整體組態檔,
- urls.py是專案的URL組態檔,
- wsgi.py是專案與WSGI兼容的Web服務器入口,
- manage.py是專案管理檔案,通過它管理專案,
運行服務器命令如下:
# vim ./bookmanager/settings.py 中設定ALLOWED_HOSTS = ['*']
# 設定后可遠程訪問 ip 0.0.0.0:8000
python manage.py runserver ip:埠
或:
python manage.py runserver
2.創建Django子應用
在django中,創建子應用模塊目錄仍然可以通過命令來操作,即:
python manage.py startapp 子應用名稱
例如:cd ~/book
python manage.py startapp book
執行后,可以看到工程目錄中多出了一個名為book的子目錄
- admin.py檔案跟網站的后臺管理站點配置相關,
- apps.py檔案用于配置當前子應用的相關資訊,
- migrations目錄用于存放資料庫遷移歷史檔案,
- models.py檔案用戶保存資料庫模型類,
- tests.py檔案用于開發測驗用例,撰寫單元測驗,
- views.py檔案用于撰寫Web應用視圖,
3. 注冊安裝子應用
在工程組態檔settings.py中,INSTALLED_APPS項保存了工程中已經注冊安裝的子應用,初始工程中的INSTALLED_APPS如下:
例如,將剛創建的book子應用添加到工程中,可在INSTALLED_APPS串列中添加'book.apps.BookConfig',
vim ./bookmanager/settings.py
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 添加自己的子應用
'book.apps.BookConfig',
]
4. 使用Django進行資料庫開發
4.1. 定義模型類
子應用目錄models.py中定義模型類,繼承自models.Model
from django.db import models
# Create your models here.
# 準備書籍串列資訊的模型類
class BookInfo(models.Model):
# 創建欄位,欄位型別...
name = models.CharField(max_length=10)
# 準備人物串列資訊的模型類
class PeopleInfo(models.Model):
name = models.CharField(max_length=10)
gender = models.BooleanField()
# 外鍵約束:人物屬于哪本書
book = models.ForeignKey(BookInfo)
4.2. 模型遷移 (建表)
-
根據子應用目錄models.py的內容生成創建表的陳述句和在資料庫中創建表
-
生成遷移檔案:根據模型類生成創建表的陳述句
python manage.py makemigrations 子應用目錄下makemigrations目錄下會生成0001_initial.py -
執行遷移:根據第一步生成的陳述句在資料庫中創建表
python manage.py migrate -
提示:默認采用
sqlite3資料庫來存盤資料
5.站點管理
5.1.管理界面本地化
Django工程目錄下settings.py設定中文和時區:
# 設定中文
LANGUAGE_CODE = 'zh-Hans'
# 亞洲上海時區
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
5.2 創建管理員
創建管理員的命令 :
python manage.py createsuperuser
# 根據提示輸入管理用戶名和密碼
-
重置密碼
-
python manager.py changepassword 用戶名
啟動服務: python manage.py runserver ip:埠
登陸站點 :http://127.0.0.1:8000/admin 管理資料庫,
在子應用目錄models.py中優化模型類展示:
# 準備書籍串列資訊的模型類
class BookInfo(models.Model):
# 創建欄位,欄位型別...
name = models.CharField(max_length=10)
def __str__(self):
"""將模型類以字串的方式輸出"""
return self.name # 在網站管理串列中可以看到name屬性
6.視圖和URL
6.1. 定義視圖函式
在子應用目錄中的views.py里定義
- 視圖就是一個
Python函式,被定義在應用的views.py中. - 視圖的第一個引數是
HttpRequest型別的物件reqeust,包含了所有請求資訊. - 視圖必須回傳
HttpResponse物件,包含回傳給請求者的回應資訊. - 需要匯入
HttpResponse模塊 :from django.http import HttpResponse - 定義視圖函式 : 回應字串
OK!給客戶端
# vim ./book/views.py
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse('OK!!!')
6.2. 配置URLconf
查找視圖的程序 :
- 1.請求者在瀏覽器地址欄中輸入URL, 請求到網站.
- 2.網站獲取URL資訊.
- 3.然后與撰寫好的URLconf逐條匹配.
- 4.如果匹配成功則呼叫對應的視圖.
- 5.如果所有的URLconf都沒有匹配成功.則回傳404錯誤.
在工程目錄中settings.py 設定URLconf入口:
# vim ./bookmanager/settings.py
ROOT_URLCONF = 'bookmanager.urls'
- 需要兩步完成
URLconf配置- 1.在
專案中定義URLconf - 2.在
應用中定義URLconf
- 1.在
- 在
專案中定義URLconf
# vim ./bookmanager/urls.py
from django.conf.urls import url,include # 匯入
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 正則匹配規則:只要不是admin/ 就算匹配成功
url(r'^', include('book.urls'))
]
- 在
應用中定義URLconf
# 在子應用目錄下新建urls.py
# vim ./book/urls.py
from django.conf.urls import url
from book.views import index
# urlpatterns為固定寫法
urlpatterns = [
url(r'^$',index) # 路由引導視圖函式
]
7.模板
7.1 模板使用步驟
- 1.創建模板
- 2.設定模板查找路徑
- 3.模板接收視圖傳入的資料
- 4.模板處理資料
7.2創建模板
- 在
應用同級目錄下創建模板檔案夾templates. 檔案夾名稱固定寫法. - 在
templates檔案夾下, 創建應用同名檔案夾. 例,Book - 在
應用同名檔案夾下創建網頁模板檔案. 例 :index.html
7.3設定模板查找路徑
在工程目錄下, vim bookmanager/setings.py 設定DIRS
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [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',
],
},
},
]
7.4.模板接收視圖傳入的資料
在子應用目錄下撰寫:
vim book/views.py
# -*- coding:utf-8 -*-
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
context = {'title':'測驗模板資料'}
return render(request, 'book/index.html', context)
7.5.模板處理資料
# 撰寫模板資料html、css、js等
vim templates/book/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>測驗模板資料</title>
</head>
<body>
<h1>根路徑下的資料</h1>
<di style="background: red; font-size: 30px"> {{title}} </di>
</body>
</html>
7.6. 查看模板處理資料成果
1.運行服務器: python manage.py runserver 0.0.0.0:8000
2.在服務器中輸入: http://192.168.1.101:8000/ 訪問
8.資料庫資料在網頁展示
實作步驟:
- 1.創建視圖
- 2.創建模板
- 3.配置URLconf
8.1創建視圖
- 查詢資料庫資料
- 構造背景關系
- 傳遞背景關系到模板
子應用目錄下修改: vim book/views.py
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from book.models import BookInfo,PeopleInfo
# BookInfo,PeopleInfo 模型類,在4.1定義遷移過
def index(request):
context = {'title':'測驗模板資料'}
return render(request, 'book/index.html', context)
# 定義視圖:提供書籍串列資訊
def bookList(request):
# 查詢資料庫書籍串列資料
books = BookInfo.objects.all()
# 構造背景關系
context = {'books':books}
# 資料交給模板處理,處理完成后通過視圖回應給客戶端
return render(request, 'book/booklist.html', context)
8.2.創建模板
- 讀取背景關系資料
- 構造網頁html檔案 : 書籍資訊以串列樣式展示
在模板目錄下:
vim templates/book/booklist.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>書籍串列資訊</title>
</head>
<body>
<ul>
{% for book in books %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body>
</html>
8.3.配置URLconf
修改子應用目錄中的urls.py檔案
from django.conf.urls import url
from book.views import index,bookList
urlpatterns = [
url(r'^$',index),
# 匹配書籍串列資訊的URL,呼叫對應的bookList視圖
url(r'^booklist/$',bookList)
]
cd $HOME/bookmanager
啟動服務: python manage.py runserver 0.0.0.0:8000
在瀏覽器輸入http://192.168.1.101:8000/booklist/
即可看到在資料庫的資料,
9.組態檔和靜態檔案
9.1 setting組態檔
BASE_DIR 屬性:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
當前工程的根目錄,Django會依此來定位工程內的相關檔案,我們也可以使用該引數來構造檔案路徑,
DEBUG屬性:
除錯模式,創建工程后初始值為True,即默認作業在除錯模式下,
作用:
-
修改代碼檔案,程式自動重啟
-
Django程式出現例外時,向前端顯示詳細的錯誤追蹤資訊
-
而非除錯模式下,僅回傳Server Error (500)
注意:部署線上運行的Django不要運行在調式模式下,記得修改DEBUG=False和ALLOWED_HOSTS(訪問ip),
設定本地語言與時區
LANGUAGE_CODE = 'en-us' # 語言
TIME_ZONE = 'UTC' # 時區# 時區
將語言和時區修改為中國大陸資訊
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
9.2 靜態檔案
專案中的CSS、圖片、js都是靜態檔案,一般會將靜態檔案放到一個單獨的目錄中,
為了提供靜態檔案,需要配置兩個引數:
- STATICFILES_DIRS存放查找靜態檔案的目錄
- STATIC_URL訪問靜態檔案的URL前綴
1) 在專案根目錄下創建static目錄來保存靜態檔案,
2) 在bookmanager/settings.py中修改靜態檔案的兩個引數為
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
3)此時在static添加的任何靜態檔案都可以使用網址/static/檔案在static中的路徑來訪問了,
例如,我們向static目錄中添加一個index.html檔案,在瀏覽器中就可以使用127.0.0.1:8000/static/index.html來訪問,
9.3App應用配置
我們將此類添加到工程settings.py中的INSTALLED_APPS串列中,表明注冊安裝具備此配置屬性的應用,
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 添加自己的子應用
'book.apps.BookConfig',
]
在每個應用目錄中都包含了apps.py檔案,用于保存該應用的相關資訊,
在創建應用時,Django會向apps.py檔案中寫入一個該應用的配置類,如
from django.apps import AppConfig
class BookConfig(AppConfig):
name = 'book'
-
AppConfig.name屬性表示這個配置類是加載到哪個應用的,每個配置類必須包含此屬性,默認自動生成,
-
AppConfig.verbose_name屬性用于設定該應用的直觀可讀的名字,此名字在Django提供的Admin管理站點中會顯示,如
from django.apps import AppConfig class UsersConfig(AppConfig): name = 'book' verbose_name = '圖書管理'
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251400.html
標籤:Python
上一篇:pandas隨機排列與隨機抽樣
下一篇:python資料型別的強制轉換
