1.数据库设计

2.插入测试数据

3.配置相关问题

1.数据库设计

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

 # -*- coding:utf-8 -*-
from __future__ import unicode_literals from django.db import models class Article(models.Model):
STATUS_CHOICES = (
('d', 'Draft'),
('p', 'Published'),
) title = models.CharField('标题', max_length=64, unique=True)
content = models.TextField('正文')
create_time = models.DateTimeField('创建时间')
last_modified_time = models.DateTimeField('修改时间')
status = models.CharField('文章状态', max_length=1, choices=STATUS_CHOICES)
abstract = models.CharField('摘要', max_length=64, blank=True, null=True, help_text='可选,如若为空将摘取正文的前64个字符')
views = models.PositiveIntegerField('浏览次数', default=0)
likes = models.PositiveIntegerField('点赞数', default=0)
topped = models.BooleanField('置顶', default=False) category = models.ForeignKey('Category', verbose_name='分类', null=True, on_delete=models.SET_NULL)
tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True) def __unicode__(self):
return self.title class Meta:
ordering = ['-last_modified_time'] class Category(models.Model):
name = models.CharField('类名', max_length=20)
create_time = models.DateTimeField('创建时间', auto_now_add=True)
last_modified_time = models.DateTimeField('修改时间', auto_now=True) def __unicode__(self):
return self.name class Tag(models.Model):
name = models.CharField('标签名', max_length=20)
create_time = models.DateTimeField('创建时间', auto_now_add=True)
last_modified_time = models.DateTimeField('修改时间', auto_now=True) def __unicode__(self):
return self.name

2.插入测试数据

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

# -*- coding:utf-8 -*-
import datetime
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pureblog.settings') import django
from django.core.exceptions import ObjectDoesNotExist
django.setup() from apps.models import Article, Category, Tag def populate():
tags = []
cat_Python = add_cat('Python')
tag_django = add_tag('django')
tags.append(tag_django)
add_article('标题2', 'p', cat_Python, tags) def add_article(title, status, cat, tags):
a = Article.objects.get_or_create(title=title,
create_time=datetime.datetime.utcnow(),
last_modified_time=datetime.datetime.utcnow(),
status=status)[0]
a.content = '这是测试数据'
a.abstract = a.content[:64]
a.category = cat for tag in tags:
a.tags.add(tag)
a.save()
return a def add_cat(name):
try:
obj = Category.objects.get(name=name)
except ObjectDoesNotExist:
obj = Category(name=name, create_time=datetime.datetime.utcnow())
obj.save()
return obj def add_cat(name):
try:
obj = Category.objects.get(name=name)
except ObjectDoesNotExist:
obj = Category(name=name, create_time=datetime.datetime.utcnow())
obj.save()
return obj def add_tag(name):
try:
obj = Tag.objects.get(name=name)
except ObjectDoesNotExist:
obj = Tag(name=name, create_time=datetime.datetime.utcnow())
obj.save()
return obj if __name__ == '__main__':
populate()
3.配置相关问题

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

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

使用django开发博客过程记录1——数据库设计的更多相关文章

  1. 使用django开发博客过程记录3——博客侧栏实现

    说起这个侧栏真是苦恼我很长时间,一开始以为和之前的一样传递额外参数就可以了就像下面这样: class IndexView(ListView): template_name = 'apps/index. ...

  2. 使用django开发博客过程记录4——Category分类视图

    在写点击博客的所属分类,显示所有该分类的文章时真是让我想了好一会,为什么呢?因为我使用的是cbv模式开发的而不是简单的视图处理逻辑的,所以,有些操作会被包装好了,你并不知道它的细节,那么我们今天要实现 ...

  3. 使用django开发博客过程记录5——日期归档和视图重写

    针对每条博客的观看次数我么是使用django的Mixin实现的: def get(self, request, *args, **kwargs): last_visit = request.sessi ...

  4. 使用django开发博客过程记录2——博客首页及博客详情的实现

    1.什么是CBV(Class-based views) 2.博客首页及博客详情实现 1.什么是CBV 什么是CBV?说白了就是以前是视图为处理请求返回响应的函数,有了cbv之后我们就可以用类处理请求和 ...

  5. django开发博客01-页面展示数据库中的数据

    1.首先在views.py中引入models.py的 Category这个类 然后在函数中(blog)写执行逻辑 categorys 返回的对象是是一个list"<QuerySet [ ...

  6. django开发博客(1) 入门

    现在正式开始博客开发 1.安装django1.4 如果你使用的是fedoraDVD版,安装时选择了web开发组建,这一步可以省略,因为它自带django环境 django下载地址 https://ww ...

  7. 纯django开发博客系统

    企业级教程:纯django开发博客系统 1.视频教程 https://www.duanshuilu.com/ 2.教程文档 https://www.duanshuilu.com/ 0.课程简介1.简价 ...

  8. Django开发博客- 三部曲

    其实在django中实现一个功能只需要三个步骤即可,这里我姑且叫它三部曲. 这三部曲就是: 定义urls映射 定义views 定义templates 什么是URL? URL就算一个WEB地址,你在浏览 ...

  9. Django开发博客 入门篇

    Django是神马? Django是一个开源免费的Web框架,使用Python编写.能够让你快速写出一个Web应用, 因为它包含了绝大部分的组件,比如认证,表单,ORM,Session,安全,文件上传 ...

随机推荐

  1. 转载文章——Hadoop学习

    转载地址:http://www.iteye.com/blogs/subjects/zy19982004?page=2 一.Hadoop社区版和发行版 社区版:我们把Apache社区一直开发的Hadoo ...

  2. Curator框架的使用

    Curator框架的目的是减少用户的复杂度,毕竟原生的Zookeeper难以使用. 这里举一个使用例子. 第一步:建立连接 // 以下代码与192.168.1.101:2181建立了连接Curator ...

  3. MYSQL基础操作之数据约束与关联查询

    一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...

  4. AEAI HR_v1.5.2升级说明,开源人力资源管理系统

    1.升级说明 本次AEAI HR升级内容主要是针对数通畅联推出AEAI ECP企业云联平台而升级的,其中对AEAI HR的各模块进行扩展,同时增加了移动门户版功能及为AEAI ECP提供数据服务接口. ...

  5. [译]理解Javascript的异步等待

    原文链接: https://ponyfoo.com/articles/understanding-javascript-async-await 作者: Nicolás Bevacqua 目前async ...

  6. Mac下安装Matlab R2015b

    步骤 下载Matlab R2015b链接:http://pan.baidu.com/s/1pLGpUfp 密码:k1xg 下载破解文件r2015b_crackhttp://download.csdn. ...

  7. PostgreSQL隐藏字段tableoid

    问题来源: 今天群里有人问:tableoid字段在每行都有,而且一个表里面的值是重复的,这样不合理...... 因此做了一些分析: 1)创建了一个表 apple=# \d test_time Tabl ...

  8. freeradius整合AD域作anyconncet认证服务器

    一.服务器要求 Radius服务器:centos6.6.hostname.selinux  disabled.stop iptables AD域服务器:Windows Server 2008 R2 E ...

  9. x01.MagicCube: 简单操作

    看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...

  10. node基础12:动态网页

    1.显示动态网页 又到了激动人心的时刻,马上就可以使用node创建动态网站了,其原理为: 在HTML模板中使用占位符 根据请求路径,确定需要返回的页面 根据请求参数来确定静态模板中占位符的值 使用正则 ...