1. 程式人生 > >Django入門------------------------------------------建立應用程式

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.再按回車鍵。