使用django开发博客过程记录1——数据库设计
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——数据库设计的更多相关文章
- 使用django开发博客过程记录3——博客侧栏实现
说起这个侧栏真是苦恼我很长时间,一开始以为和之前的一样传递额外参数就可以了就像下面这样: class IndexView(ListView): template_name = 'apps/index. ...
- 使用django开发博客过程记录4——Category分类视图
在写点击博客的所属分类,显示所有该分类的文章时真是让我想了好一会,为什么呢?因为我使用的是cbv模式开发的而不是简单的视图处理逻辑的,所以,有些操作会被包装好了,你并不知道它的细节,那么我们今天要实现 ...
- 使用django开发博客过程记录5——日期归档和视图重写
针对每条博客的观看次数我么是使用django的Mixin实现的: def get(self, request, *args, **kwargs): last_visit = request.sessi ...
- 使用django开发博客过程记录2——博客首页及博客详情的实现
1.什么是CBV(Class-based views) 2.博客首页及博客详情实现 1.什么是CBV 什么是CBV?说白了就是以前是视图为处理请求返回响应的函数,有了cbv之后我们就可以用类处理请求和 ...
- django开发博客01-页面展示数据库中的数据
1.首先在views.py中引入models.py的 Category这个类 然后在函数中(blog)写执行逻辑 categorys 返回的对象是是一个list"<QuerySet [ ...
- django开发博客(1) 入门
现在正式开始博客开发 1.安装django1.4 如果你使用的是fedoraDVD版,安装时选择了web开发组建,这一步可以省略,因为它自带django环境 django下载地址 https://ww ...
- 纯django开发博客系统
企业级教程:纯django开发博客系统 1.视频教程 https://www.duanshuilu.com/ 2.教程文档 https://www.duanshuilu.com/ 0.课程简介1.简价 ...
- Django开发博客- 三部曲
其实在django中实现一个功能只需要三个步骤即可,这里我姑且叫它三部曲. 这三部曲就是: 定义urls映射 定义views 定义templates 什么是URL? URL就算一个WEB地址,你在浏览 ...
- Django开发博客 入门篇
Django是神马? Django是一个开源免费的Web框架,使用Python编写.能够让你快速写出一个Web应用, 因为它包含了绝大部分的组件,比如认证,表单,ORM,Session,安全,文件上传 ...
随机推荐
- CAS Client集群环境的Session问题及解决方案
[原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登录的基本原理.这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法.并结合实际工作中碰到的问题,探讨 ...
- 数据备份的OSS接口
最近在做一个新的项目,从RDS备份到OSS,进行数据备份以及后续的还原.这边对阿里云的OSS数据上传接口进行说明,先做下笔记先简单介绍下OSS: ①Object 在OSS中,用户操作的基本数据单元是O ...
- QPalette的用法
1.QPalette的概念 调色板类QPallete提供了颜色角色(color roles)概念,是指当前GUI界面中颜色的职责,通过枚举变量QPalette::ColorRole来定义, 比较常用的 ...
- .NET中集合已修改;可能无法执行枚举操作 的解决办法
foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环. https://msdn.microsoft.com/zh-cn/library/tt ...
- [LeetCode] Search for a Range 搜索一个范围
Given a sorted array of integers, find the starting and ending position of a given target value. You ...
- webpack构建vue项目(配置篇)
最近公司要求用vue重构项目,还涉及到模块化开发,于是乎,我专门花了几天的时间研究了一下webpack这个目前来看比较热门的模块加载兼打包工具,发现上手并不是很容易,现将总结的一些有关配置的心得分享出 ...
- SSM整合(二):Spring4与Mybatis3整合
上一节测试好了Mybatis3,接下来整合Spring4! 一.添加spring上下文配置 在src/main/resources/目录下的spring新建spring上下文配置文件applicati ...
- redis 命令
添加数据 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo } span.s1 { } set key value //添加多条数据 ...
- Web Deploy自动配置
自动发布配置,需要在发布的配置文件里面添加以下一句,避免在发布时,无权限! <Project ToolsVersion="4.0" xmlns="http://sc ...
- PRINCE2随笔
首先要说的是,我这篇体会是针对一定的背景的,不能算是一种通用的管理方式,只能是我自己的经验总结,能给大家平常的管理提供一点思路,我就很满足了. 先说说背景,我所在公司做的是大型桌面应用软件,简单点说就 ...