Django入門------------------------------------------建立應用程式
在安裝好Django框架的前提下,建立應用程式,一個Django專案是由一系列的應用程式組成的。
在終端窗口裡執行的runserver,再開啟一個終端視窗,切換到manage.py所在的目錄,啟用該虛擬環境,執行starapp APPname ,這個讓Django建立應用程式的所需的基礎設施。
在這裡建立一個learning_logs的應用程式,輸入“ls learning_logs/”,看到有以下檔案,admin.py apps.py models.py tests.py views.py/
1.定義模型:
模型告知Django如何處理應用程式中儲存的資料,可以這樣想,它就是個類。
在資料夾裡開啟models.py,編寫一個使用者儲存主題的模型:
#-*-coding:utf-8-*-
from django.db import models
# Create your models here.
class Topic(models.Model):
#使用者學習的模型
text=models.CharField(max_length=200)
date_added=models.DateTimeField(auto_now_add=True)
def __str__(self): #返回模型的字串表示
return self.text
現在模型建立好了,就要啟用模型,開啟settings.py,在INSTALLED_APPS=裡進行修改:加上自己新增的應用程式。
-----------
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'learning_logs', #我的應用程式
]
----------
修改資料庫,讓它能夠儲存模型Topic相關的資訊,在終端窗口裡輸入修改資料庫的命令
makemigrations appname,就可以修改資料庫,這裡生成0001_initial.py的遷移檔案,將在資料庫為topic建立一個表;
遷移專案,輸入migrate,這裡需要注意的是applying learning_logs.0001_initial....是不是OK,這裡表示遷移正常
只要修改專案的資料是,都是三部曲:1.修改models.py 2.對應用程式呼叫makemigrations;3.讓Django遷移專案
2.Django管理網站
Django提供的(admin site)能輕鬆處理模型,這裡為專案獎勵管理網站,並使用它為模型新增一些主題
先建立管理員,也就是超級使用者,擁有所有的許可權,
像上面一樣輸入就可以建立了管理員。
再向管理網站註冊模型,我們自己建立的模型是需要手動進註冊,開啟admin.py,註冊模型:
from django.contrib import admin
#-*-coding:utf-8-*-
# Register your models here.
from learning_logs.models import Topic
admin.site.register(Topic)
現在,在瀏覽器裡輸入http://127.0.0.1:8000/admin回車,輸入剛剛建立的管理員號碼與密碼,
新增主題,單擊瀏覽器介面裡的Topics進入主題網頁,單擊add,輸入建立的主題,單擊save,返回主題管理介面。
新定義一個entry模型,要記錄學到的多個知識,就要為使用者定義一個條目定義模型, 每個條目都與特定的主題相關聯。
在models.py編寫程式碼:
#-*-coding:utf-8-*-
from django.db import models
# Create your models here.
class Topic(models.Model):
#使用者學習的模型
text=models.CharField(max_length=200)
date_added=models.DateTimeField(auto_now_add=True)
def __str__(self): #返回模型的字串表示
return self.text
class Entry(models.Model):
#學到的有關某個主題的具體知識
topic=models.ForeignKey(Topic,on_delete=models.CASCADE)
text=models.TextField()
date_added=models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural='entries'
def __str__(self):
return self.text[:50]+"..."
在entry模型裡,topic屬性是一個外來鍵,外來鍵是資料庫術語,它可以引用資料庫的另一條記錄,關聯起來。嵌入一個meta類,儲存用於管理模型的額外資訊。
就像上面說的,修改了模型,就要進行三部曲。
註冊entry模型:
from django.contrib import admin
#-*-coding:utf-8-*-
# Register your models here.
from learning_logs.models import Topic,Entry
admin.site.register(Topic)
admin.site.register(Entry)
開啟瀏覽器,輸入,看到介面如下:
單擊Entries的add,看到有下拉列表,可以選擇哪個主題,然後新增文字框資訊 。這裡創立2個chess和1個rock climbing。
可以通過互動式終端用程式設計的方式檢視資料,------Django shell。
方法Topic.objects.all()可以獲取模型Topic的所有例項,返回一個查詢表。也可以列印主題的ID屬性和字串表示。
每次修改模型後,都要重啟shell,退出shell,win系統是ctr+z.再按回車鍵。