摘要
该博客系统是一个关于明星简介的blog,大概包含了以下功能:查阅具体明星帖子、照片和具体介绍、近期明星文章、分享功能、发帖功能、标签分类,并且支持全文搜索
可以在后台admin界面管理帖子、类别和标签
1,引言
此博客系统使用python django实现的,功能较少,主要是为了练习刚学的django
Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。
使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MTV 模型,即 Model(模型)+ Template(模板)+View(视图)设计模式,MTV 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
2,系统结构
MTV模式(Model-Template–view)是软件工程中的一种软件架构模式。为了各组件间保持松耦合关系
除了mtv三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model 和 Template,MTV 的响应模式如下所示:
系统主要结构:
- 首页展示2. 帖子分类3. 帖子归档4. 近期文章5. 关于博主6. 全文搜索7. 发布帖子
3,实现代码
环境搭建
创建django项目并添加一个APP:post,创建一个叫blog的数据库
前端模板:
发帖功能:
创建post应用
创建模型类
rom django.db import models
from ckeditor_uploader.fields import RichTextUploadingField
class Category(models.Model):
cname = models.CharField(max_length=30, unique=True, verbose_name=u’类别名称’)
class Meta:
db_table = ‘t_category’
verbose_name_plural = u’类别’
def str(self):
return u’Category:’ + self.cname
class Tag(models.Model):
tname = models.CharField(max_length=30, unique=True, verbose_name=u’标签名称’)
class Meta:
db_table = 't_tag'
verbose_name_plural = u'标签'
def __str__(self):
return u'Tag:' + self.tname
class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
desc = models.CharField(max_length=100)
content = RichTextUploadingField(null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tag = models.ManyToManyField(Tag)
class Meta:
db_table = ‘t_post’
verbose_name_plural = u’帖子’
def str(self):
return u’Post:’ + self.title
映射数据库表
python manage.py makemigrations post
python manage.py migrate
利用后台类发布帖子
from django.contrib import admin
from .models import *
class PostModelAdmin(admin.ModelAdmin):
list_display =