首页 > 其他分享 >BBS-个人博客项目

BBS-个人博客项目

时间:2023-08-14 16:26:01浏览次数:26  
标签:verbose 个人 ForeignKey models True 博客 null BBS name

BBS-个人博客项目完整搭建

项目开发流程

项目开发模式分类

1、瀑布开发模式

瀑布开发模式是一种更倾向于严格控制的管理模式,要求在提出需求之后,充分完成项目的规划,
各阶段都要经过严格的评审,只有当一个阶段的需求完成得非常好时才能进入下一个阶段。
但是瀑布开发模式开发的失败率较高,且周期较长,于是就产生了敏捷开发模式。

2、敏捷开发模式

敏捷开发模式的核心是迭代开发,它将一个项目完整的开发流程分为了几个周期(也可以说是版本),
由于每个版本的开发流程相似,看上去相当于一个重复迭代的过程。
这么开发的好处是,使一个大的项目能在较短时间内上线,并在后续对它进行不断地迭代和优化。(很少企业用)

项目开发流程

-立项
-需求分析
-原型图
-切图
-技术选型,数据库架构设计
-前后端协同开发
-上线测试服务器联调
-测试
-修改bug
-上线运行

BBS多人博客项目基本功能和需求

# 开发任意的项目第一个阶段就是弄清楚你要开发什么功能

# 一个项目最重要的是表结构的设计,大部分时间都是用来设计表.
# 你在企业中对于一个完成的项目写代码的时间大概有个30%,其余的时间都用来做铺垫
比如:产品需求的确定,技术选型,数据库设计...

项目程序设计

前后端混合项目,需要python解释器(建议使用3.6),django(建议版本2.2.2)

我们在一步步设计这个项目的时候,应该始终牢记每个功能都要遵循django请求的生命周期图,如下图

BBS数据库表结构设计

在我们分析完一个项目的需求之后,我们着手开发项目所需要做的第一件事就是设计数据库的表结构及其字段。

一般来说,设计一个数据库的表结构一般要注意以下三点:

● 第一,把项目的需求转化为一个个数据库中的表
● 第二,探寻表与表之间的关联关系
● 第三,牢记以下原则:能用多对多关联关系就尽量不要用一对多关联关系,能用一对多关联关系就尽量别用一对一(原因是为了减少耦合)


Django1表设计

from django.db import models

# Create your models here.
"""
先写普通字段
之后再写外键字段
"""
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser):
    phone = models.BigIntegerField(verbose_name='手机号',null=True)
    # 头像
    avatar = models.FileField(upload_to='avatar/',default='avatar/default.png',verbose_name='用户头像')
    """
    给avatar字段传文件对象 该文件会自动存储到avatar文件下 然后avatar字段只保存文件路径avatar/default.png
    """
    create_time = models.DateField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog',null=True)


class Blog(models.Model):
    site_name = models.CharField(verbose_name='站点名称',max_length=32)
    site_title = models.CharField(verbose_name='站点标题',max_length=32)
    # 简单模拟 带你认识样式内部原理的操作
    site_theme = models.CharField(verbose_name='站点样式',max_length=64)  # 存css/js的文件路径


class Category(models.Model):
    name = models.CharField(verbose_name='文章分类',max_length=32)
    blog = models.ForeignKey(to='Blog',null=True)


class Tag(models.Model):
    name = models.CharField(verbose_name='文章标签',max_length=32)
    blog = models.ForeignKey(to='Blog', null=True)


class Article(models.Model):
    title = models.CharField(verbose_name='文章标题',max_length=64)
    desc = models.CharField(verbose_name='文章简介',max_length=255)
    # 文章内容有很多 一般情况下都是使用TextField
    content = models.TextField(verbose_name='文章内容')
    create_time = models.DateField(auto_now_add=True)

    # 数据库字段设计优化
    up_num = models.BigIntegerField(verbose_name='点赞数',default=0)
    down_num = models.BigIntegerField(verbose_name='点踩数',default=0)
    comment_num = models.BigIntegerField(verbose_name='评论数',default=0)

    # 外键字段
    blog = models.ForeignKey(to='Blog', null=True)
    category = models.ForeignKey(to='Category',null=True)
    tags = models.ManyToManyField(to='Tag',
                                  through='Article2Tag',
                                  through_fields=('article','tag')
                                  )


class Article2Tag(models.Model):
    article = models.ForeignKey(to='Article')
    tag = models.ForeignKey(to='Tag')


class UpAndDown(models.Model):
    user = models.ForeignKey(to='UserInfo')
    article = models.ForeignKey(to='Article')
    is_up = models.BooleanField()  # 传布尔值 存0/1


class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo')
    article = models.ForeignKey(to='Article')
    content = models.CharField(verbose_name='评论内容',max_length=255)
    comment_time = models.DateTimeField(verbose_name='评论时间',auto_now_add=True)
    # 自关联
    parent = models.ForeignKey(to='self',null=True)  # 有些评论就是根评论

注意点:

在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,
此参数为了避免两个表里的数据不一致问题,不然会报错:

TypeError: __init__() missing 1 required positional argument: 'on_delete'


1. 举例说明:

user=models.OneToOneField(User)

owner=models.ForeignKey(UserProfile)

2. 需要改成:

user=models.OneToOneField(User,on_delete=models.CASCADE)   
  --在老版本这个参数(models.CASCADE)是默认值

owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE)  
  --在老版本这个参数(models.CASCADE)是默认值

 

3. 参数说明:

'''
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值

CASCADE:此值设置,是级联删除。

PROTECT:此值设置,是会报完整性错误。

SET_NULL:此值设置,会把外键设置为null,前提是允许为null。

SET_DEFAULT:此值设置,会把设置为外键的默认值。

SET():此值设置,会调用外面的值,可以是一个函数。

'''
 
// 一般情况下使用CASCADE就可以了。

Django自定义用户模型类

自定义用户模型类,继承了Django的AbstractUser类,定义好之后不能直接迁移,
需要修改相关用户模型类的配置:

在settings中设置AUTH_USER_MODEL:

    # settings.py
    # 格式为 "<django_app名>.<model名>"
    AUTH_USER_MODEL = "myapp.NewUser"

注册功能

标签:verbose,个人,ForeignKey,models,True,博客,null,BBS,name
From: https://www.cnblogs.com/huangchunfang/p/17628994.html

相关文章

  • BBS
    项目开发流程项目分类主流的web项目一般分为两类:面向互联网用户和公司内部管理面向互联网用户:C(consumer)端项目公司内部管理:B(business)端项目还有一类web应用,基本采用基于角色的权限控制,不同的员工在这套系统中拥有不同的权限,适用于公司内部管理。基于权限的后台关系系统RBA......
  • 如何拥有个人域名邮箱
    对于邮箱我们常用的是QQ邮箱或者163邮箱。这在联系方式里面显得不够高大上,装逼不够满分。本文为了介绍如何搭建自己的域名邮箱,让装逼的光辉照亮互联网!前期准备开通腾讯企业邮箱服务自己的域名开通腾讯企业邮箱服务进入腾讯企业邮箱官网,点击注册。填写信息注册企业微信,这部分信息随......
  • Python基础day65 BBS个人博客项目完整搭建
    BBS-个人博客项目的完整搭建项目开发流程一、项目分类现在互联网公司需要开发的主流web项目一般分为两类:面向互联网用户,和公司内部管理。面向互联网用户:C(consumer)端项目公司内部管理:B(business)端项目还有一类web应用,基本采用基于角色的权限控制,不同的员工在这套系统......
  • Visual studio-Git工具使用个人版
    开源的git管理工具确实非常方便,相信很多小伙伴工作了一些年都会有自己的代码库,有的时候做一个新的项目了,需要使用到以前用过的技术,这个时候在去翻找以前的项目,可能就找不到了,但是吧代码库都整理到git上就方便多了,而且有什么新的代码或者优化等等都可以在任何地方修改和同步,想想还......
  • Anaconda+PyCharm+Pytorch/tensorflow环境配置个人总结
    Anaconda是一个非常方便的python版本管理工具,可以很方便地切换不同版本的Python进行测试。同时不同版本之间也不存在相互的干扰。PyCharm是一款常见的PythonIDE,pytorch和TensorFlow是目前两个主流的深度学习框架。Anaconda安装前往官方网址下载最新版即可,安装教程 PyCharm......
  • 博客被封-执念放下
    才发现我之前的博客所有人都无法访问,那么分享就没有意义了,未来若大环境好些再分享吧。当我也经历过被同性以男女朋友方式的爱后我能明白你的压力,只是做出的选择不同而已。我已放下我们之间的孰是孰非,已然不再执着了,因果可以跳出。愿你未来无忧,内心徜徉。......
  • Django博客开发教程:使用ckeditor富文本编辑器添加数据
    前一篇没用,我测试了集成ueditor之后没法上传图片,ueditor百度早就停止维护了,于是我想到了改用ckeditor,结果一遍成功富文本即具备丰富样式格式的文本。可以是包含了HTML语法格式的字符串。为了快速简单的让用户能够在页面中编辑带html格式的文本,引入富文本编辑器。  一、安......
  • 博客园如何转载别人的文章
     转载于 https://www.cnblogs.com/gexbooks/p/11283582.html 最近学习PyQt5发现有好的文章介绍控件的,但是太多,想着转载后面慢慢看,查看了下,并无快捷转载按钮,查找度娘,找到一种方法一、首先我们要设置自己的博客园进入自己的博客园,点击安步骤点击:选项->Markdown->SAVE二......
  • 大二暑假第五周博客
    第五周,一些python的代码,有一些bug还没找出来{"cells":[{"cell_type":"markdown","id":"f427f82c","metadata":{},"source":["#第一题"]},{"cell_type&......
  • 博客园 cn book 主题备份
    又到了一年一度的换肤环节cnbook......