1. Django框架介紹
1.1什么是框架?
軟體框架就是為實作或完成某種軟體開發時,提供了一些基礎的軟體產品;
框架的功能類似于基礎設施 ,提供并實作最為基礎的軟體架構和體系;
通常情況下我們依據框架來實作更為復雜的業務程式開發;
二個字,框架就是程式的骨架
1.2Python 中常見的框架有哪些?
大包大攬 Django 被官方稱之為完美主義者的Web框架,
力求精簡 web.py 和 Tornado
新生代微框架 Flask 和 Bottle
Django 是一個高級的Python Web框架,它鼓勵快速開發和清潔,務實的設計,
由經驗豐富的開發人員構建,它負責Web開發的許多麻煩,因此您可以專注于撰寫應用程式,而無需重新創建輪子,
免費的和開源的,
被官方稱之為完美主義者的Web框架,
官方網址:https://www.djangoproject.com/
1.3 Django 的安裝
在線安裝Django,指定版本安裝
pip install Django -i https://pypi.douban.com/simple
2.后臺管理
通過簡單示例,使用 Django 完成基本流程的開發,學習 Django 的主要的知識點,
第一步:專案的創建與運行
第一次使用 Django ,那么你必須要照顧一些初始設定,也就是說,您需要自動生成一些建立 Django專案的代碼,
法一:
從命令列 cd 到您要存盤代碼的目錄,然后運行以下命令:
進入專案目錄,目錄結構如下圖:
在線安裝Django,指定版本安裝 pip install Django -i https://pypi.douban.com/simple
django-admin startproject mydjangoproject
再用pycharm打開建立的此目錄就可以了
法二:
打開后如下圖:
目錄說明:
manage.py :一個命令列工具,可以使你用多種方式對 Django 專案進行互動
內層的目錄:專案的真正的Python包
_ init _.py :一個空檔案,它告訴Python這個目錄應該被看做一個Python包
settings.py :專案的配置
urls.py :專案的URL宣告
wsgi.py :專案與 WSGI 兼容的Web服務器入口
按照運行給出的ip與埠進行訪問測驗:
第二步:應用的創建和使用
(1) 創建第一個應用程式
Django 自帶一個實用程式,可以自動生成應用程式的基本目錄結構,因此您可以專注于撰寫代碼而不是創建目錄,
在一個專案中可以創建一到多個應用,每個應用進行一種業務處理
創建應用的命令:
python3 manage.py startapp bookApp
(2) 撰寫第一個視圖函式
我們來寫第一個視圖,打開檔案 bookApp/views.py 并放入以下Python代碼:
(3) 路由規則
要在 bookApp 目錄中創建一個 URLconf ,創建一個名為 urls.py ,如下所示:
根據組態檔 mydrangoproject/settings 可知路由查找的主檔案是 mydrangoproject/urls.py , 因此在該檔案
添加一條 url 規則
include()函式允許參考其他 URLconfs ,
(4) 效果展示
啟動服務器
因為有新建的檔案,所以需要重新運行一下
訪問 url 地址: http:// 127.0.0.1:8000/book/ 如果看到主頁內容即成功,
修改為html格式:
url() 函式介紹
Django url() 可以接收四個引數,分別是兩個必選引數:
regex 、 view 和兩個可選引數:
kwargs 、 name ,
regex : 正則運算式,與之匹配的 URL 會執行對應的第二個引數 view,
view : 用于執行與正則運算式匹配的 URL 請求,
kwargs : 視圖使用的字典型別的引數,
name : 用來反向獲取 URL
第三步: 專案的資料庫模型
本示例完成“圖書-英雄”資訊的維護,需要存盤兩種資料:圖書、英雄
圖書表結構設計: 表名: Book
圖書名稱: title
圖書發布時間: pub_date
英雄表結構設計: 表名: Hero
英雄姓名: name
英雄性別: gender
英雄簡介: hcontent
所屬圖書: hbook
圖書-英雄的關系為一對多
(1). 創建資料庫模型
創建model模型
from django.db import models
"""
名詞:
ORM(Object Ralational Mapping,物件關系映射)用來把物件模型表示的物件映射到基于S Q L 的關系模型資料庫結構中去,
這樣,我們在具體的操作物體物件的時候,就不需要再去和復雜的 SQ L 陳述句打交道,只需簡單的操作物體物件的屬性和方法,
一對多關系:外鍵寫在多的一端
book:hero = 1:n
"""
# Create your models here.
# 類對應資料庫表, 表名稱默認為bookApp_book.
class Book(models.Model):
# 屬性對應資料庫表的列名,默認會添加id這一列,
name = models.CharField(max_length=40, verbose_name="書籍名稱")
pub_date = models.DateField(verbose_name="出版日期")
# 類對應資料庫表, 表名稱默認為bookApp_hero.
class Hero(models.Model):
# 屬性對應資料庫表的列名,默認會添加id這一列,
gender_choice = [
(1, "男"),
(2, "女")
]
name = models.CharField(max_length=20, verbose_name="人物名稱")
# 性別只能選擇男(1)或者女(2)
gender = models.IntegerField(choices=gender_choice, verbose_name="性別") # 1, 2
content = models.TextField(max_length=1000, verbose_name="人物描述")
# 外鍵關聯, 如果洗掉書籍時,相關hero對應的書籍設定為空,
book_id = models.ForeignKey(Book, on_delete=models.SET_NULL,
null=True, verbose_name="書籍id")
在settings.py匯入子應用程式
(2). 生成資料庫表
查看是否創建成功
(3). 資料庫模型基本操作
- 現在進入互動式的Python shell,并使用 Django 提供的免費 API
python manage.py shell - 引入需要的包
- 查詢所有圖書資訊
需要編輯models.py,設定魔術方法(字串友好展示,便于除錯代碼)
def _ str _(self):
return self.name
退出在進入后可查看到書名
- 根據條件搜索并查看

- 查找圖書資訊

- 修改圖書資訊

- 洗掉圖書資訊

- 添加關聯物件
書籍的創建
book = Book(name=“倚天屠龍記”, pub_date=date(2000,1,1)) book.save()
人物的創建
hero1 = Hero(name=“周芷若”, gender=2, content=“info…”)
外鍵關聯
hero1.book_id=book
hero1.save()
有一個 Hero 存在,必須要有一個 Book 物件,提供了創建關聯的資料:
book.hero_set.create(name=“張無忌”, gender=True, content=“武當派第二代“張五俠”張翠山與天鷹教紫微堂堂主殷素素的兒子”)
獲得關聯集合:回傳當前book物件的所有hero
book.hero_set.all()
第四步: 啟用后臺Admin 站點管理
站點分為“內容發布(后臺管理)”和“公共訪問(前臺管理)”兩部分
—“內容發布”的部分負責添加、修改、洗掉內容,開發這些重復的功能是一件單調乏味、缺乏創造力的作業,
因此, Django 會根據定義的模型類完全自動地生成管理模塊
Django 框架中有一個非常強大的應用功能: 自動管理界面, 常被Web平臺管理者使用,去管理整個Web平臺,
默認情況下,在 settings.py 組態檔中 INSTALLED_APPS 包含以下應用程式,為了后續的開發,默認這些應用程式都是包含在里面的,
(0). 資料庫遷移
使用這些 Django 自帶的應用程式,需要我們在資料庫中創建一些資料表對應,然后才能使用它們,
生成遷移檔案:根據模型類生成 sql 陳述句
執行遷移:執行 sql 陳述句生成資料表
查看:
顯示如下:
路徑設定:
(1). 創建管理員用戶
啟動服務器,通過 “127.0.0.1:8000/admin” 訪問,輸入上面創建的用戶名、密碼完成登錄
進入管理站點,默認可以對 groups、users 進行管理
(2). 管理界面本地化
默認語言為英文,若想本地化(漢化),執行以下操作
編輯 settings.py 檔案,設定編碼、時區
無需再runserver,重新訪問一次就會變成中文
(3). 自定義模型加入后臺管理
打開 bookApp/admin.py 檔案,注冊模型
重繪管理頁面,可以對 Book 的資料進行增刪改查操作
問題: 后臺管理時, Book管理顯示的是英文, 如何變成中文?
class Meta:
# 單數時顯示的名稱
verbose_name = '圖書資訊'
# 復數時顯示的名稱
verbose_name_plural = '圖書資訊'
class Meta:
verbose_name = '人物資訊'
verbose_name_plural = '人物資訊'

(4). 自定義管理頁面
Django 提供了 admin.ModelAdmin 類
通過定義 ModelAdmin 的子類,來定義模型在 Admin 界面的顯示方式
from django.contrib import admin
from bookApp.models import Book,Hero
# Register your models here.
#關聯物件
#對于 Hero 模型類,有兩種注冊方式
#方式一:與 Book 模型類相同
#方式二:關聯注冊
#admin.StackedInline : 內嵌關聯注冊類
#admin.TabularInline : 表格 關聯注冊類
class HeroInline(admin.StackedInline):
model = Hero
extra = 2
# 書籍自定義管理頁面
class BookAdmin(admin.ModelAdmin):
# 串列頁展示的設定
list_display = ['id', 'name', 'pub_date']
list_filter = ['pub_date']
search_fields = ['name']
list_display_links = ['name']
list_per_page = 5
inlines = [HeroInline]
# 人物自定義管理頁面
class HeroAdmin(admin.ModelAdmin):
# 串列頁展示的設定
list_display = ['id', 'name', 'gender']
list_filter = ['gender']
search_fields = ['name', 'content']
list_display_links = ['name']
list_per_page = 5
# 添加、修改頁屬性
# 增加和編輯頁的設定
#fields:屬性的先后順序 (fields = ['pub_date', 'name'])
#fieldsets :屬性分組, 注意: fields和fieldsets只能設定一個
fieldsets = [('必填資訊', {'fields': ['name', 'book_id']}),
('選填資訊', {'fields': ['gender', 'content']}), ]
# 關聯注冊
admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)
- get
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265831.html
標籤:python
上一篇:Python一切皆是物件,但這和記憶體管理有什么關系?
下一篇:服務注冊與發現--eureka








































