今天花了一些時間搭了一個博客系統,雖然并沒有相關于界面的美化,但是發布是沒問題的。
開發環境
操作系統:windows 7 64位
Django: 1.96
Python:2.7.11
IDE: PyCharm 2016.1
功能篇
既然是博客系統,發布的自然是博客了。讓我們想想,一篇博客有什么屬性。所以我們要有能添加博客,刪除博客,修改博客,以及給博客發評論,貼標簽,劃分類等功能。
關系分析
屬性
博客:標題,內容。
標簽:標簽名
分類:分類的名稱
評論:評論人,評論人email,評論內容
關系
博客:一篇博客可以有多個標簽,多個評論,屬于一個分類
標簽:一類標簽可以賦予多篇博客,一個博客也可以由多個標簽,所以是多對多的關系
分類:一個分類內部可以有多個博客,所以和博客是一對多的關系
評論:很明顯一個評論屬于一個博客,而一個博客可以有很多的評論,所以是一對多的關系。
模型層設計
廢話不多說,根據上一步的關系分析,直接設計即可。
# coding:utf8from __future__ import unicode_literalsfrom django.db import models# Create your models here.class Catagory(models.Model): """ 博客分類 """ name = models.CharField('名稱',max_length=30) def __unicode__(self): return self.nameclass Tag(models.Model): """ 博客標簽 """ name = models.CharField('名稱',max_length=16) def __unicode__(self): return self.nameclass 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.titleclass 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/#databasesDATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }}然后Django就可以根據我們剛才的模型來逆向的生成數據庫底層的業務邏輯。然后就需要調用相關的命令即可。
python manage.py makemigrationspython manage.py migrate
這樣,框架就會幫助我們完成底層的數據庫操作了。而且不用擔心表與表之間的關系。
新聞熱點
疑難解答