diango創建的一個簡單的基本流程

高內聚,低耦合

高內聚:一個模塊內部一個功能。

低耦合:每個模塊各司其職,盡量零關聯。


創建django項目

1、django-admin startproject hero(項目名稱)

進入hero目錄,目錄結構如下圖:


manage.py:一個命令行工具,可以使你用多種方式對Django項目進行交互

內層的目錄hero:項目的真正的Python包

_init _.py:一個空文件,它告訴Python這個目錄應該被看做一個Python包

settings.py:項目的配置

urls.py:項目的URL聲明

wsgi.py:項目與WSGI兼容的Web服務器入口

2、創建app

python manage.py startapp yy(app名稱)


3、數據庫配置

在settings.py文件中,通過DATABASES項進行數據庫設置

django支持的數據庫包括:sqlite、mysql等主流數據庫

Django默認使用SQLite數據庫

創建應用

在一個項目中可以創建一到多個應用,每個應用進行一種業務處理

創建應用的命令:

python manage.py startapp booktest

應用的目錄結構如下圖


4、定義模型類class

eg:

class BookInfo(models.Model):

???????? btitle = models.CharField(max_length=20)

????????? bpub_date = models.DateTimeField()

def __str__(self):

?????????? return "%d" % self.pk

class HeroInfo(models.Model):

????????? hname = models.CharField(max_length=20)

????????? hgender = models.BooleanField()

????????? hcontent = models.CharField(max_length=100)

????????? hBook = models.ForeignKey('BookInfo')

def __str__(self):

???????? return "%d" % self.pk

有一個數據表,就有一個模型類與之對應

打開models.py文件,定義模型類

引入包from django.db import models

模型類繼承自models.Model類

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

當輸出對象時,會調用對象的str方法

生成數據表

激活模型:編輯settings.py文件,將herojob應用加入到installed_apps中

生成遷移文件:根據模型類生成sql語句,遷移文件被生成到應用的migrations目錄

5、python manage.py makemigrations

下圖是結果,當生成這個的時候,說明成功

執行遷移:執行sql語句生成數據表

6、python manage.py migrate

結果:

在Python的開發中,遇到了這個錯誤:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

解決方法如下:

在代碼文件的最上方,添加如下代碼:

import os,django

# project_name項目名稱

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")

django.setup()

原因:

Python啟動方式python,會啟動交互解釋器,需要告訴Django使用哪個設置文件,Django會搜索DJANGO_SETTINGS_MODULE環境變量,它被設置在settings.py中,

解決方法:用python manage.py shell來啟動命令解釋器而不是python,因為python manage.py shell中包含了Django使用哪個settings.py文件

測試數據操作

激活進入python shell,進行簡單的模型API練習


python manage.py shell

引入需要的包:

from booktest.models import *??

from datetime import *

關聯對象的操作

2、獲得關聯集合:返回當前book對象的所有hero

b=BookInfo.objects.get(pk=1)

注意:一定要寫上外鍵,否則不會關聯集合。

b.heroinfo_set.all()

查詢所有圖書信息:

BookInfo.objects.all()

新建圖書信息:

b = BookInfo()

In [7]: b.btitle = "俠客行"

In [8]: b.pub_date = datetime.today()

使用MySql數據庫

在虛擬環境中安裝mysql包

在mysql中創建數據庫

打開settings.py文件,修改DATABASES項

*****************1、在虛擬環境中安裝mysql包*****************

pip install PyMySQL

MySQLdb只適用于python2.x,發現python3上的pip裝不上。它在py3的替代品是:pip install PyMySQL

而django默認的還是使用MySQLdb:執行會報:ImportError: No module named 'MySQLdb'

解決:

在站點的項目中的eg:test1中?? __init__.py文件中添加

import pymysql

pymysql.install_as_MySQLdb()


*****************2、在mysql中創建數據庫表*****************

create database test2 charset=utf8


*****************3、修改DATABASES項*****************

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'test2',

'USER': '用戶名',

'PASSWORD': '密碼',

'HOST': '數據庫服務器ip,本地可以使用localhost',

'PORT': '端口,默認為3306',

}

}

使用MySql數據庫

在虛擬環境中安裝mysql包

在mysql中創建數據庫

打開settings.py文件,修改DATABASES項

當修改model.py里邊的內容的時候,需要重新遞交的時候,需要做的步驟:

第一步:刪除migrations下的0001_initial.py文件


第二步:重新遷移文件,執行python manage.py??? makemigrations

進入mysql對其所用的數據庫進行刪除,然后在重建;

第三步:刪除數據庫,避免影響

第四步:重新執行python manage.py migrate

注意:這個重新遷移,相當于把修改的東西全部刷新一下。刷新就要逐個執行上面的四個步驟。這樣不會出錯。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374