在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,就可以增加或者修改删除博客,博客分类,博客标签了。