使用django开发博客过程记录1——数据库设计

Posted 魔术师的礼帽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用django开发博客过程记录1——数据库设计相关的知识,希望对你有一定的参考价值。

1.数据库设计

2.插入测试数据

3.配置相关问题

 

1.数据库设计

数据库有简单的三张表:Article、Category、Tag以下是代码

 

 1 # -*- coding:utf-8 -*-
 2 from __future__ import unicode_literals
 3 
 4 from django.db import models
 5 
 6 
 7 class Article(models.Model):
 8     STATUS_CHOICES = (
 9         (d, Draft),
10         (p, Published),
11     )
12 
13     title = models.CharField(标题, max_length=64, unique=True)
14     content = models.TextField(正文)
15     create_time = models.DateTimeField(创建时间)
16     last_modified_time = models.DateTimeField(修改时间)
17     status = models.CharField(文章状态, max_length=1, choices=STATUS_CHOICES)
18     abstract = models.CharField(摘要, max_length=64, blank=True, null=True, help_text=可选,如若为空将摘取正文的前64个字符)
19     views = models.PositiveIntegerField(浏览次数, default=0)
20     likes = models.PositiveIntegerField(点赞数, default=0)
21     topped = models.BooleanField(置顶, default=False)
22 
23     category = models.ForeignKey(Category, verbose_name=分类, null=True, on_delete=models.SET_NULL)
24     tags = models.ManyToManyField(Tag, verbose_name=标签集合, blank=True)
25 
26     def __unicode__(self):
27         return self.title
28 
29     class Meta:
30         ordering = [-last_modified_time]
31 
32 class Category(models.Model):
33     name = models.CharField(类名, max_length=20)
34     create_time = models.DateTimeField(创建时间, auto_now_add=True)
35     last_modified_time = models.DateTimeField(修改时间, auto_now=True)
36 
37     def __unicode__(self):
38         return self.name
39 
40 class Tag(models.Model):
41     name = models.CharField(标签名, max_length=20)
42     create_time = models.DateTimeField(创建时间, auto_now_add=True)
43     last_modified_time = models.DateTimeField(修改时间, auto_now=True)
44 
45     def __unicode__(self):
46         return self.name

 

2.插入测试数据

此时登录admin后台没有数据,于是想利用编写一个populate.py负责插入测试数据以下是代码:

 1 # -*- coding:utf-8 -*-
 2 import datetime
 3 import os
 4 os.environ.setdefault(DJANGO_SETTINGS_MODULE, pureblog.settings)
 5 
 6 import django
 7 django.setup()
 8 
 9 from apps.models import Article, Category, Tag
10 
11 def populate():
12     tags = []
13     cat_linux = add_cat(Linux)
14     tag_ubantu = add_tag(ubantu)
15     tag_redhat = add_tag(redhat)
16     tags.append(tag_ubantu)
17     tags.append(tag_redhat)
18     add_article(标题1, p, cat_linux, tags)
19 
20 def add_article(title, status, cat, tags):
21     a = Article.objects.get_or_create(title=title,
22             create_time=datetime.datetime.utcnow(),
23             last_modified_time=datetime.datetime.utcnow(),
24             status=status)[0]
25     a.content = 这是测试数据
26     a.abstract = a.content[:64]
27     a.category = cat
28 
29     for tag in tags:
30         a.tags.add(tag)
31     a.save()
32     return a
33 
34 def add_cat(name):
35     c = Category.objects.get_or_create(name=name, create_time=datetime.datetime.utcnow())[0]
36     return c
37 
38 def add_tag(name):
39     t = Tag.objects.get_or_create(name=name, create_time=datetime.datetime.utcnow())[0]
40     return t
41 
42 if __name__ == __main__:
43     populate()

3.配置相关问题

1)因为我的数据库使用的是mysql数据库,插入数据时可能会遇到字符编码同问题,以下链接是解决这个问题的链接:

  http://stackoverflow.com/questions/6065037/rails-mysql-encoding-issue-question-mysqlerror-illegal-mix-of-collations-l

 

以上是关于使用django开发博客过程记录1——数据库设计的主要内容,如果未能解决你的问题,请参考以下文章

Django博客开发-数据建模与样式设定

Django博客开发教程,Django快速开发个人blog

Django训练项目之BBS(博客项目)

3000元买的实战Python Django开发博客系统,全套视频教程学习资料

python毕业设计基于django框架的个人博客系统的设计与实现 毕设参考

技术博客Django中文件下载的实现