在虛擬環境下安裝Django框架

首先進入 py_django 虛擬環境

workon py_django

然后pip安裝Django

pip install django

最后查看是否安裝成功

pip list

創建BMSTest項目

django-admin startproject 項目名稱
例:
django-admin startproject BMSTest

PyCharm打開項目

Django項目目錄結構

Django項目目錄說明

文件名
作用
manage.py
項目管理文件,通過它管理項目
BMSTest
與項目同名的目錄,此處為BMSTest
__init__.py
一個空文件,作用是這個目錄BMSTest可以被當作包使用
asgi.py
Django3.0版本新出的異步功能模塊
settings.py
項目的整體配置文件
urls.py
項目的URL配置文件
wsgi.py
項目與WSGI兼容的Web服務器入口

創建項目應用

進入虛擬環境

在 Pycharm 左下角找到 Terminal 選項并打開

然后利用 workon 命令進入虛擬環境

PyCharm的Terminal終端跟CMD窗口是一樣的。

創建book應用

在Terminal終端下輸入指令創建book應用

python manage.py startapp book

然后刷新或者等待一下,PyCharm就會顯示你創建的應用

 

Django應用目錄說明

文件夾/文件
作用
__init__.py
項目管理文件,通過它管理項目
migrations
與項目同名的目錄,此處為BMSTest
admin.py
一個空文件,作用是這個目錄BMSTest可以被當作包使用
apps.py
Django3.0版本新出的異步功能模塊
models.py
項目的整體配置文件
tests.py
項目的URL配置文件
views.py
項目與WSGI兼容的Web服務器入口

安裝應用

在 BMSTest 下的 setting.py 文中中找到 INSTALLED_APPS,并在其后面添加剛剛創建的Django應用( book )。

在Web服務器上運行Django項目

在開發階段,為了能夠快速預覽到開發的效果,Django提供了一個純python編寫的輕量級web服務器,僅在開發階段使用。

在 PyCharm Terminal 終端中輸入如下指令運行服務器:

python manage.py runserver ip:端口
例:
python manage.py runserver

可以不寫IP和端口,默認IP是127.0.0.1,默認端口為8000。

模型設計

我們一般操作數據庫的時候都是通過寫sql語句,那么能不能不寫sql語句就可以操作數據庫呢? 可以利用ORM框架。

ORM框架

O是object,也就 類對象 的意思,R是relation,翻譯成中文是關系,也就是關系數據庫中 數據表 的意思,M是mapping,是映射的意思。在ORM框架中,它幫我們把類和數據表進行了一個映射,可以讓我們通過類和類對象就能操作它所對應的表格中的數據。ORM框架還有一個功能,它可以根據我們設計的類自動幫我們生成數據庫中的表格,省去了我們自己建表的過程。

Django中內嵌了ORM框架,不需要直接面向數據庫編程,而是定義模型類,通過模型類和對象完成數據表的增刪改查操作。


使用Django進行數據庫開發的步驟如下:

  • 在models.py中定義模型類
  • 遷移
  • 通過類和對象完成數據增刪改查操作

Django模型設計

在上篇文章中我們創建了一個圖書管理系統(BMSTest),并部署了一個book應用。我們接著這個項目來介紹Django進行數據庫開
發過程,模型設計。

1、定義模型類

模型類定義在models.py文件中,繼承自models.Model類。

說明:不需要定義主鍵列,在生成時會自動添加,并且值為自動增長。

設計圖書類

BookInfo

類屬性
數據類型
備注
title
CharField(字符類型)
圖書名稱
author
CharField(字符類型)
圖書作者
pub_date
DateField(日期類型)
出版日期

 

模型類的設計

根據設計,在models.py中定義模型類如下:

# -*- coding:utf-8 -*-
"""
"""

from django.db import models


class BookInfo(models.Model):
    """圖書模型類"""
    title = models.CharField(verbose_name=u'圖書名稱', max_length=20)

    author = models.CharField(verbose_name=u'圖書作者', max_length=20)

    pub_date = models.DateField(verbose_name=u'出版日期')

參數介紹

  • verbose_name:詳細備注名稱
  • max_length:數據最大長度

這里就簡單的用了幾個參數,詳細參數的使用,大家可以查看Django官方文檔。

繼承models.Model的類的設計都會對應一張數據庫表。

2、遷移

遷移前目錄結構如下圖:

遷移由兩步完成:

  • 1.生成遷移文件:根據模型類生成創建表的遷移文件。
  • 2.執行遷移:根據第一步生成的遷移文件在數據庫中創建表。

生成遷移文件

在 PyCharm Terminal 終端下輸入如下命令:

python manage.py makemigrations

執行生成遷移文件命令后,會在應用book目錄下的migrations目錄中生成遷移文件。

生成遷移文件后的目錄結構:

打開上圖中的遷移文件,內容如下:

Django框架根據我們設計的模型類生成了遷移文件,在遷移文件中我們可以看到fields列表中每一個元素跟BookInfo類屬性名以及屬性的類型是一致的。同時我們發現多了一個id項,這一項是Django框架幫我們自動生成的,在創建表的時候id就會作為對應表的主鍵列,并且主鍵列自動增長。

執行遷移文件

在 PyCharm Terminal 終端下輸入如下命令:

python manage.py migrate

執行結果

Applying book.0001_initial... OK 說明我 book 應用下的 0001_initial 遷移文件遷移成功。

遷移后的目錄結構圖:

Django默認采用 sqlite3 數據庫,上圖中的 db.sqlite3 就是Django框架幫我們自動生成的數據庫文件。 sqlite3 是一個小型的數據庫,通常用在手機中,它跟 mysql 一樣,我們也可以通過sql語句來操作它。

遷移成功后 sqlite3 數據庫會創建 book_bookinfo 表

book 是應用的名稱
bookinfo 是模型類的名稱
因此數據表的默認名稱為:<app_name>_<model_name> ,應用名 + 下劃線 + 模型名