使用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,安全,文件上传 ...
随机推荐
- IOS 网络浅析-(十一 三方 AFNetworking3.0简介)
AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查.下面我就开始进入正题了. 目前使用人数最多的第三方网络库, ...
- ASP.NET MVC 让@Html.DropDownList显示默认值
在使用@Html.DropDownList的过程中,发现它的用法很局限,比如在加载的时候显示设定的默认项或者调整它的显示样式,在网上查了一些资料,终于把这个问题解决了. 一.View代码 @using ...
- PHP中的数据库二、memcache
:first-child, ol li > :first-child, ul li ul:first-of-type, ol li ol:first-of-type, ul li ol:firs ...
- MySQL 常用命令总结
http://blog.csdn.net/hanxin1987216/article/details/5976860 一.总结 1.Linux系统下启动MySQL的命令: mysqladmin sta ...
- 用普通计算机假设基于liunx系统的NAS部署FineReport决策系统
何为NAS? 简单说就是连接在网络上,具备资料存储功能的装置因此也称为“网络存储器”.它是一种专用数据存储服务器.他以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽.提高性能.降低 ...
- AJAX跨域调用ASP.NET MVC或者WebAPI服务的解决方案
问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web ...
- 【JS/CSS3】实现带预览图幻灯片效果~
一.前期准备 1.1 案例分析 适用场景:单例布局1.2 方法论 V视图 HTML+CSS+调试C js实现控制流程D数据 优化扩展 二.代码 结构 <div class="slide ...
- Struts2 验证码图片实例
本文转载于DongLiYang的博客http://www.cnblogs.com/dongliyang/archive/2012/08/24/2654431.html 其中修改过一部分,针对使用注解而 ...
- [LeetCode] Strobogrammatic Number III 对称数之三
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...
- [LeetCode] Happy Number 快乐数
Write an algorithm to determine if a number is "happy". A happy number is a number defined ...