基于Django的博客项目---模型设计

it2023-08-22  72

在models.py中设计模型用来保存数据

1.博客分类模型(博客分类即原创,转载等)

class Category(models.Model): name = models.CharField(max_length=128, verbose_name='博客分类') def __str__(self): return self.name class Meta: verbose_name = "博客分类" verbose_name_plural = '博客分类'

2.同理创建博客标签模型

3.创建博客模型

class Entry(models.Model): title = models.CharField(max_length=128, verbose_name='文章标题') author = models.ForeignKey(User, verbose_name='博客作者', on_delete=models.CASCADE) # ForeignKey,外键;使用Django内置的User对象 img = models.ImageField(upload_to='blog_images', null=True, blank=True, verbose_name='博客配图') # django不会直接将图片保存到数据库中,而是在数据库中保存指向图片文件的路径,图片本身被保存在程序员指定的目录下,如何保存? # null = True,表示该字段在数据库中可以为空 # blank = True,表示该字段在Django后台创建时可以为空 # 需要安装pillow才可使用 body = models.TextField(verbose_name='博客正文') # TextField可以比CharField装更多东西 abstract = models.TextField(max_length=256, blank=True, null=True, verbose_name='博客摘要') visiting = models.PositiveIntegerField(default=0, verbose_name='博客访问量') # PositiveInteger,正整数 category = models.ManyToManyField('Category', verbose_name='博客分类') # ManyToMany,(博客与博客分类)多对多 tags = models.ManyToManyField('Tag', verbose_name='博客标签') created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') modified_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') def __str__(self): return self.title def get_absolute_url(self): return reverse('blog:blog_detail', kwargs={'blog_id': self.id}) # http://127.0.0.1/blog/3 def increase_visiting(self): self.visiting += 1 self.save(update_fields=['visiting']) class Meta: ordering = ['-created_time'] # 用创建时间的反序排序,即最近的博客最先展示 verbose_name = "博客" verbose_name_plural = '博客'

配置admin.py

from django.contrib import admin from . import models # Register your models here. class EntryAdmin(admin.ModelAdmin): list_display = ['title', 'author', 'visiting', 'created_time', 'modified_time'] admin.site.register(models.Category) admin.site.register(models.Tag) admin.site.register(models.Entry, EntryAdmin)

其他

(1)安装pillow 执行activate命令(可直接在pycharm下方的terminal中输入)激活虚拟环境并安装pillow

pip install pillow

(2)执行命令1

python manage.py makemigrations

为什么要执行这个命令呢? 因为更改了 model.py的内容,执行此命令就相当于在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件。你可以手动打开这个文件,看看里面是什么。 (3)执行命令2

python manage.py migrate

将该改动作用到数据库文件,比如创建数据表,或者增加字段之类的 (4)创建超级用户用来管理后台

python manage.py createsuperuser

(5)启动和管理 访问127.0.0.1:8000/admin,就可以增加或者修改删除博客,博客分类,博客标签了。

最新回复(0)