建立模型
既然你的開發環境,即工程,已經設定好了,那麼你應該開始工作了。
用django寫的每乙個應用都會包含乙個遵循某種約定的包。django能夠自動產生乙個應用的基本目錄結構,所以你能夠專心於寫**而不是建立目錄。
工程和應用的比較
乙個工程和乙個應用之間的區別是什麼?乙個應用指的是乙個web應用,做例如網路日誌系統、乙個做公共紀錄的資料庫或者乙個簡單的投票應用。乙個工程是配置檔案和多個應用的集合,乙個工程可以包含多個應用,乙個應用可以在多個工程中。
你的應用可以放在你python路徑的任何地方。在這個教程中,我們會在與manage.py
檔案同一目錄下建立我們的投票應用,這樣的話,建立的應用可以作為頂層模組被匯入,而不是作為mysite
的子模組。
為了建立你的應用,確保你現在是在與manage.py
處於同一等級目錄下,鍵入下面的命令:
展示:
charies:desktop weichuang$ cd mysite
charies:mysite weichuang$ ls
db.sqlite3 manage.py mysite
charies:mysite weichuang$ ls
db.sqlite3 manage.py mysite polls
這會建立乙個poll
目錄,裡面是這樣的:
這個目錄結構會存放投票這個應用。
用django寫乙個資料庫web應用的第一步是定義你的模型
在我們這個簡單的投票應用中,我們會建立兩個模型:question
和choice
。乙個question
模型包含乙個問題和乙個發行日期。乙個choice
模型包含兩個字段:選擇的文字和投票計數器。 每個choice
都與question
是關聯的。
這些概念是由簡單的python類來表示的。像下面那樣編輯polls/models.py
檔案
from django.db import models
class
question
(models.model):
question_text=models.charfield
(max_length=200)
pub_date=models.datetimefiled
('date
published')
class
choice
(models.model):
question=models.foreignkey
(question)
choice_text=models.charfield
(max_length=200)
votes=models.integerfield
(default=0)
**很清楚,每個模型是由django.db.models.model
的子類表示的。每個模型擁有許多類成員變數,每個類類成員變數代表模型中的乙個字段。
每個欄位是由field
類的例項表示的。例如,charfield
代表字元字段,datetimefield
代表日期。這會告訴django每個欄位是什麼型別的資料。
每個field
類的例項的名字就是欄位名,這樣的格式對機器來說是友好的。你會在python**中使用這個值,並且你的資料庫會使用它作為欄位名。
一些field
類需要一些引數。例如,charfiled
需要你給它傳遞max_length
。我們不久就會發現,那樣使用不僅僅是以資料庫的模式,而且非常有效。乙個field
可以有多種可選的引數,在這個例子中,我們把votes
的default
值是0。
最後,使用foreignkey
定義了乙個關係。那會告訴django每個choice
模型都會與question
有關係。django支援許多常見的資料庫關係:多對
一、多對多、一對一。
Django 第乙個Django程式
pip install virtualenv之後,建立乙個名為venv的環境,使用如下命令 virtualenv venv之後,啟用該虛擬環境,使用命令 source venv bin activate之後,你會看到你的shell前有乙個venv的標識。如下圖所示 退出虛擬環境使用deactivat...
Django學習之第乙個專案
1 新建乙個專案,專案名稱叫做myproject django admin.py startproject myproject我們使用tree myproject來檢視一下執行上面命令後,生成了哪些檔案 myproject manage.py myproject init py settings.p...
第乙個Django專案
1 確保已安裝python 2 安裝django,在cmd中執行命令 pip install django3 建立目錄 eg d work python 4 建立django工程,在cmd中執行命令 django admin.py startproject mysite5 在pycharm中新建工程...