今天花了一些時間搭了一個部落格系統,雖然并沒有相關于界面的美化,但是釋出是沒問題的。
開發環境
作業系統:windows 7 64位
Django: 1.96
Python:2.7.11
IDE: PyCharm 2016.1
功能篇
既然是部落格系統,釋出的自然是部落格了。讓我們想想,一篇部落格有什麼屬性。是以我們要有能添加部落格,删除部落格,修改部落格,以及給部落格發評論,貼标簽,劃分類等功能。
關系分析
屬性
部落格:标題,内容。
标簽:标簽名
分類:分類的名稱
評論:評論人,評論人email,評論内容
關系
部落格:一篇部落格可以有多個标簽,多個評論,屬于一個分類
标簽:一類标簽可以賦予多篇部落格,一個部落格也可以由多個标簽,是以是多對多的關系
分類:一個分類内部可以有多個部落格,是以和部落格是一對多的關系
評論:很明顯一個評論屬于一個部落格,而一個部落格可以有很多的評論,是以是一對多的關系。
模型層設計
廢話不多說,根據上一步的關系分析,直接設計即可。
# coding:utf8
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Catagory(models.Model):
"""
部落格分類
"""
name = models.CharField('名稱',max_length=30)
def __unicode__(self):
return self.name
class Tag(models.Model):
"""
部落格标簽
"""
name = models.CharField('名稱',max_length=16)
def __unicode__(self):
return self.name
class Blog(models.Model):
"""
部落格
"""
title = models.CharField('标題',max_length=32)
author = models.CharField('作者',max_length=16)
content = models.TextField('部落格正文')
created = models.DateTimeField('釋出時間',auto_now_add=True)
catagory = models.ForeignKey(Catagory,verbose_name='分類')
tags = models.ManyToManyField(Tag,verbose_name='标簽')
def __unicode__(self):
return self.title
class Comment(models.Model):
"""
評論
"""
blog = models.ForeignKey(Blog,verbose_name='部落格')
name = models.CharField('稱呼',max_length=16)
email = models.EmailField('郵箱')
content = models.CharField('内容',max_length=240)
created = models.DateTimeField('釋出時間',auto_now_add=True)
def __unicode__(self):
return self.content
資料庫設定
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
然後Django就可以根據我們剛才的模型來逆向的生成資料庫底層的業務邏輯。然後就需要調用相關的指令即可。
python manage.py makemigrations
python manage.py migrate
這樣,架構就會幫助我們完成底層的資料庫操作了。而且不用擔心表與表之間的關系。