基于Django开发的SkyNet博客一——创建模型
2017-08-14 00:00
405 查看
这一段时间主要在学习Django开发, 同时巩固一下自己的python语言。
Django是一个功能强大的python web框架,基于此我开发了一个SkyNet博客系统,其中html也使用了semantic ui前端框架,有兴趣的可以去学习一下。
至于django的基础内容我就不赘述了,不熟悉的同学可以去查看我的另外一篇Django初识也有很多比我写的好的博客。
每一个models都是jango.db.models.Model的子类
models的每一个属性代表这数据库的一个字段
Django给你自动生成数据库访问API
我定义了三个模型
首先是Blog模型,具体定义如下:
下面我来一一讲解
定义了title和body两个字段,区别是定义了两个不同的Field,charField适用于短的文本,而TextField适用于存储长文本,这是一个小的区别。
定义里create_time和modify_time为DateTimeField,该Field包含Date和Time,相对应的还有DateField和TimeField,设置的属性auto_now_add当初次创建的时候设置该字段,而auto_now是每一次models被保存的时候都会更改这个值。
status设置了一个属性,choices可以进行选择指定的值
category设置的是ManyToManyField,也就是多对多,而user就设置了外键。
接下来就需要创建Category和User了:
这里User是继承了AbstractUser使用Django自带的用户,比较方便。
最后定义了BlogComment用来记录用户评论
基本上SkyNet博客的模型创建到这里就可以了,最后来配置一下admin,在admin展示我们的模型。
这里要说一下,为了让我们的User能在admin中显示,还需要在settings.py中添加AUTH_USER_MODEL = 'blog.User',是默认的User为我们自定义的User,当然你也可以添加不同的字段来扩充User。
模型创建就先介绍到这了吧!
下一篇:
基于Django开发的SkyNet博客二——base Template
Django是一个功能强大的python web框架,基于此我开发了一个SkyNet博客系统,其中html也使用了semantic ui前端框架,有兴趣的可以去学习一下。
至于django的基础内容我就不赘述了,不熟悉的同学可以去查看我的另外一篇Django初识也有很多比我写的好的博客。
models
首先第一篇我打算写一下模型,在Django中叫做models,一个模型就是一个单一的数据来源,可以简单的理解就是在数据库的一个表,并且models有如下的基本概念:每一个models都是jango.db.models.Model的子类
models的每一个属性代表这数据库的一个字段
Django给你自动生成数据库访问API
我定义了三个模型
首先是Blog模型,具体定义如下:
class Blog(models.Model): POST_STATUS = ( ('P', '已发布'), ('D', '已删除'), ('E', '正在编辑'), ) title = models.CharField('标题',max_length=150) body = models.TextField('正文') create_time = models.DateTimeField('创建时间',auto_now_add=True) modify_time = models.DateTimeField('最后一次修改',auto_now=True) status = models.CharField('文章状态',max_length=1, choices=POST_STATUS) views = models.PositiveIntegerField('浏览量', default=0) likes = models.PositiveIntegerField('喜欢', default=0) praises = models.PositiveIntegerField('点赞', default=0) category = models.ManyToManyField('Category',blank=True) user = models.ForeignKey('User',verbose_name='作者') def __str__(self): return self.title class Meta: ordering = ('-create_time',)
下面我来一一讲解
定义了title和body两个字段,区别是定义了两个不同的Field,charField适用于短的文本,而TextField适用于存储长文本,这是一个小的区别。
定义里create_time和modify_time为DateTimeField,该Field包含Date和Time,相对应的还有DateField和TimeField,设置的属性auto_now_add当初次创建的时候设置该字段,而auto_now是每一次models被保存的时候都会更改这个值。
status设置了一个属性,choices可以进行选择指定的值
category设置的是ManyToManyField,也就是多对多,而user就设置了外键。
接下来就需要创建Category和User了:
#models.py class Category(models.Model): names = models.CharField('类型名称',max_length=20) desc = models.TextField('分类描述',blank=True, null=True) def __str__(self): return self.names class User(AbstractUser): pass
这里User是继承了AbstractUser使用Django自带的用户,比较方便。
最后定义了BlogComment用来记录用户评论
#models.py class BlogComment(models.Model): user = models.ForeignKey('User', verbose_name='用户') post = models.ForeignKey('BlogPost', verbose_name='文章') comment = models.TextField('评论内容',blank=True, null=True) comment_time = models.DateTimeField('评论时间',auto_now_add=True) class Meta: ordering = ('-comment_time',)
基本上SkyNet博客的模型创建到这里就可以了,最后来配置一下admin,在admin展示我们的模型。
#admin.py class BlogUserAdmin(UserAdmin): pass class BlogAdmin(admin.ModelAdmin): list_display = ('title', 'create_time') admin.site.register(models.Post, BlogAdmin) admin.site.register(models.Category) admin.site.register(models.BlogComment) admin.site.register(models.User,BlogUserAdmin)
这里要说一下,为了让我们的User能在admin中显示,还需要在settings.py中添加AUTH_USER_MODEL = 'blog.User',是默认的User为我们自定义的User,当然你也可以添加不同的字段来扩充User。
模型创建就先介绍到这了吧!
下一篇:
基于Django开发的SkyNet博客二——base Template
相关文章推荐
- 基于Django开发的SkyNet博客一
- 基于Django开发的SkyNet博客二——base Template
- 基于Django开发的SkyNet博客三——登录注册界面
- 基于Django开发的SkyNet博客四——编辑界面
- 基于Django开发的SkyNet博客二——base Template
- Django开发个人博客网站——5、创建第一个app
- Django blog - 03 -创建Django博客博客的数据库模型
- 从开发到部署,使用django创建一个简单可用的个人博客
- Django开发的基于markdown的博客开源
- Django开发个人博客网站——3、使用pycharm创建博客项目
- Django开发个人博客网站——28、服务器centos7创建虚拟环境
- Django项目开发举例举例之创建应用模型(2)
- Django开发博客- 模型
- django 简易博客开发 1 安装、创建、配置、admin使用(转)
- 基于Django1.9.5开发一个简单的博客系统
- 3 - 创建 Django 博客的数据库模型
- Django(博客系统):基于pycharm如何一个django工程下创建多个app
- django 简易博客开发 1 安装、创建、配置、admin使用
- 创建 Django 博客的数据库模型
- Django开发(一)——创建项目,实现数据模型