開始寫Django模組
AJframe-教你開始寫Django模組
還可以很方便的自己寫模組!!!
以AJframe架構為例,來說明如何建立簡單的模組應用
打開你的models.py
此路徑在你新增的app底下,忘記了嗎?開始Django專案然後引用timezone和User 模組
from django.db import models from django.utils import timezone #引用了django 的時區 from django.contrib.auth.models import User #引用了django的 User接下來在下面建立模組代碼如下
class Article(models.Model): #宣告 Article為一個模組要被寫入資料庫 author = models.ForeignKey(User) #獲取user的選項 title = models.CharField(max_length=20)#宣告title是一個限制字元為20的輸入框 text = models.TextField() #宣告text 為一個文字輸入框 created_date = models.DateTimeField(default=timezone.now) #宣告產生時間為現在時間 published_date = models.DateTimeField(blank=True, null=True) #宣告發佈時間為空值,讓你自己選 def publish(self): # 這就像是一個function,告訴系統當我們點選發佈時間後可獲得現在的時間.儲存送出獲取的時間值 self.published_date = timezone.now() self.save() def __unicode__(self): #然後以unicode返回title的值.. return self.title
把建立的模組引用到admin管理介面
剛剛建立好模組以後,必須有個出口作為媒介.此時打開blog/admin.py:
from blog.models import Article #引用我們新增的Article 模組 # Register your models here. admin.site.register(Article) #讓Article 模組顯示在管理介面中.然後我們輸入 localhost:8000/admin 就可以看到剛剛創的模組Article和相關欄位了. 試著在管理介面新增文章看看! 當然我們也可以使用shell 來新增文章
python manage.py shell #進入shell模式 from blog.models import Article #引用Article模組 Article.objects.all() #撈取Article模組元件下的所有資料. 若還沒新增文章.可以在此新增 Article.objects.create(title='AJframe title', text='test') #這樣就會直接新增一個title叫做AJframe,text叫做test的文章. 此時我們再輸入 Article.objects.all() 是不是就把剛剛新增的文章撈出來了呢?? 很簡單吧!! 輸入exit() 跳出此模式
試著進階點在寫個有互動關聯的模組
如果我們要讓所有Article都能夠選自己的分類該怎麼寫呢?很簡單的,我們在Article模組前在寫入一個模組叫做Category
class Category(models.Model): name = models.CharField(max_length=20) def __unicode__(self): return self.name原理跟剛剛一樣,不做解釋了,我們創建了一個叫做Category的模組,並且限制為有一個20字元內的欄位框.
要怎樣讓Article撈取Category,有關聯性呢?
在剛剛創建的Article下新增一個宣告category = models.ForeignKey('Category', blank=True, null=True)這樣就串起了Article和Category的關聯性
修改代碼如下:
class Category(models.Model): name = models.CharField(max_length=20) def __unicode__(self): return self.name class Article(models.Model): author = models.ForeignKey(User) category = models.ForeignKey('Category', blank=True, null=True) title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True, null=True) def publish(self): self.published_date = timezone.now() self.save() def __unicode__(self): return self.title
記得到admin新增site喔!
創建好的模組要在管理介面顯示,記得打開admin.py加入引用: ...... from blog.models import Category ....... admin.site.register(Category)這樣就在每個Article內增加了Category的互動了.
是不是很簡單呢~^^
模組也有層級性喔!!!!
剛剛教學中實現了每篇文章內包含分類功能.因為文章要撈取分類,所以分類(Category)這模組要先產生.
後面文章Article才可以獲取它喔!!
這對於以後邏輯實現會很重要,一定要先弄清楚喔~^^
留言
張貼留言