Django 博客
来源:互联网 发布:淘宝店铺转让流程图 编辑:程序博客网 时间:2024/06/05 19:48
创建模型
观察csdn的博客界面,一篇博客通常有标题,作者,内容,摘要,访问数,创建时间,修改时间,标签,类别等等。
其中一篇文章对应一个类别,一个作者,而对应多个标签。
创建相关模型。
from django.contrib.auth.models import Userfrom django.db import modelsfrom django.utils import timezoneclass Category(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.nameclass Tag(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.nameclass Post(models.Model): title = models.CharField(max_length=100) body = models.TextField() #default参数指定创建时的默认值,这里为timezone.now方法 #也可以指定auto_now_add=True,与default=timezone.now作用相似 #但是设置了auto_now_add后就不可编辑了,因此此处使用default参数 created_time = models.DateTimeField(default=timezone.now) #修改时间,设置auto_now参数为True,代表每次修改都将时间设置为最新 modified_time = models.DateTimeField(auto_now=True) excerpt = models.CharField(max_length=200, blank=True) views = models.PositiveIntegerField(default=0) #ForeignKey代表一对一关系 author = models.ForeignKey(User) category = models.ForeignKey(Category) #ManyToManyField代表一对多关系 tags = models.ManyToManyField(Tag, blank=True) def __str__(self): return self.title class Meta: #默认按创建时间降序,不带-号代表升序 ordering = ['-created_time']
生成迁移文件
创建了新的模型后,需要生成迁移文件,用于生成对应的数据库表。
执行python manage.py makemigrations
正常情况下控制台输出
Migrations for 'blog': blog\migrations\0001_initial.py - Create model Category - Create model Post - Create model Tag - Add field tags to post
执行完命令后,生成了blog\migrations\0001_initial.py
,
如果使用了git等版本管理系统,需要把迁移文件也提交上去。
迁移数据
如上篇博客一样,执行python manage.py migrate
但是这里迁移的是自己创建的模型的表。
输出如下
Operations to perform: Apply all migrations: admin, auth, blog, contenttypes, sessionsRunning migrations: Applying blog.0001_initial... OK
迁移完成后,查看数据库db.sqlite3,会发现多了blog_post、blog_tag、blog_category 和blog_post_tags这几张表。默认的表明是<app名>_<模型名>
,如果自定义的话,只需要指定模型里Meta类的db_table字段。
管理迁移文件
执行python manage.py
,可以看到有好多命令,其中有些命令可以管理迁移文件。
python manage.py showmigrations
显示所有的迁移文件
python manage.py sqlmigrate
显示迁移文件所对应的sql语句
比如上面生成的blog\migrations\0001_initial.py
可以使用python manage.py sqlmigrate blog 0001
python manage.py squashmigrations
合并迁移文件,如果模型的改动太多,生成了多个迁移文件,可以使用的这个命令进行合并
创建模型实例
创建了模型之后,就可以手动在命令行里创建实例了。
推荐使用IPython命令行,安装方法pip3 intall ipython
执行python manage.py shell
导入要用的模型类。
from blog.models import Post, Tag, Categoryfrom django.contrib.auth.models import User
就可以开始创建实例了。
tag = Tag.objects.create(name='tag1')cat = Category.objects.create(name='cat1')user = User.objects.first()post = Post.objects.create(title="title",excerpt="summary",body="content",author=user,category=cat)post.tags.add(tag)
具体怎么使用模型API请查阅官方文档,模型API使用教程
同时也可以在后台管理界面添加模型实例,只需要在web\blog\admin.py
里将模型就行注册。
from django.contrib import adminfrom blog.models import Post, Category, Tagadmin.site.register(Post)admin.site.register(Category)admin.site.register(Tag)
重新启动服务器后,进入管理界面,就可以发现多出了blog相关的管理界面,然后就可以对自定义的模型增删改查了。
本文相关源码
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django 博客
- Django--博客
- django搭建简易博客
- django创建博客
- django 博客一
- django博客二
- django博客三
- django博客四
- Zinnia - Django 博客框架
- STM32的RCC配置流程
- opencv-Trackbar调色板
- 让你Mac上的PDF文件“瘦身”一下感觉如何
- Linux 基础学习篇12(不同系统之间的文件传输)
- fragment的生命周期
- Django 博客
- 使用SlidingMenu创建左侧滑动菜单+Fragment的简单用法——学习笔记
- bulk collect into , extend(), multiset union,dbms_metadata.getddl
- STM32--USART(串口通信)
- 接口测试工具之抓包工具介绍
- 批量替换类名Shell脚本源码解析
- react-native初始化指定的版本
- sublime
- Rxjava+Retrofit的简单使用