数据库设计

用户表(用的是auth_user那张表,通过自定义表继承AbstractUser)

phone   电话
avatar 头像
create_time 创建时间
#外键
blog 一对一个人站点表

个人站点表

site_name     站点名
site_title 名言警句
site_theme 样式

标签表

name   标签名
#外键
blog 一对多个人站点 每个站点含有多个标签

分类表

name     分类名
#外键
blog 一对多个人站点 每个站点含有多个分类

文章表

title           文章标题
desc 文章摘要
content 文章内容
create_time 文章创建时间 #外键
blog 一对多个人站点 一个站点下可以有多篇文章
tag 多对多标签 一个文章有多个标签,一个标签可以对应多篇文章
category 一对多分类 一个分类下面有多篇文章 #普通字段
# 数据库设计优化(******)设置这些就不用去点赞点踩表中查询数据了,减少数据库查询量
#开一个事务,当你操作点赞点踩表的时候,下面这些数据也会改变
评论数 comment_num 普通字段
点赞数 up_num 普通字段
点踩数 down_num 普通字段

点赞点踩表

user            一对多用户表      一个赞只能对应一个用户,一个用户能点不同的赞
article 一对多文章表 一个赞只能对应一篇文章,一篇文章能有多个赞
is_up 0/1

评论表

user            一对多用户表        一个评论是一个用户写的,一个用户能写多个评论
article 一对多文章表
comment 评论内容
create_time 创建时间
parent 一对多评论表(自关联) 父评论的id 如果有值说明你是子评论 如果没有值说明你是父评论

注册功能  利用forms组件来校验登录信息是否正确,并且渲染页面

1.文件输入框设置了id='myfile'和隐藏文件输入框,在label标签设置for='myfile',那么点击头像两个字就有弹出文件输入框的效果。

<label for="myfile">头像
设置默认头像图片
<img src="/static/img/default.jpg" alt="" height="" style="margin-left: 20px" id="img">
</label>
<input type="file" id="myfile" style="display: none"> #文件输入框

注册功能大致流程:

1.在views视图创建一个forms对象,传递到模板层,渲染出输入框

2.注册页面选择头像在ajax用Filereader对象读取。

3.在模板层写ajax的数据提交,views视图层接收数据,forms组件接收数据校验,直接把request.POST传给forms组件校验

4.传到后台

登录功能

主页功能

2019-9-27

注销功能

auth.logout(request)

修改密码

复制一个模态框放在页面

form表单提交一定要是input标签,不能是button

admin后台管理

先创建一个超级用户登录后台

在应用中找到admin.py文件  然后注册 你想要操作的默写表即可,使用超级管理员账户 即可登录后台进行数据的管理

from django.contrib import admin
from app01 import models admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Tag)
admin.site.register(models.Category)
admin.site.register(models.Article2Tag)
admin.site.register(models.Article)
admin.site.register(models.UpAndDown)
admin.site.register(models.Comment)

用户头像展示

主页面展示

个人主页搭建

个人站点表site_name和用户名设置一样的

步骤:

1.先验证输入的个人站点是否存在

查询filter返回的结果 ,queryset对象(单个Queryset对象)

打印结果:<QuerySet [<UserInfo: jason>]>
打印类型:<class 'django.db.models.query.QuerySet'>

查询filter>> first()

打印结果: jason   这个也是一个对象
打印类型:<class 'app01.models.UserInfo'>

多个Queryset对象(传递到后台需要for循环取出)

<QuerySet [<Article: .Net Core 添加 Swagger 支持>, <Article: Docker Compose与Docker Stack的不同之处>, <Article: 新手学习FFmpeg - 调用API完成视频的读取和输出>, <Article: 了解一下Java SPI的原理>, <Article: Django+MySQL Dashboard 网页端数据库可视化>, <Article: mybatis中collection association优化使用及多参数传递>, <Article: 200行代码实现Mini ASP.NET Core>]>

侧边栏渲染

侧边栏功能

2019-9-28

一、文章详情页搭建

内容和样式复制博客园的,注意要在前端页面显示内容的代码在|safe,取消前端代码转义

二、点赞点踩功能

1.先校验用户是否登录

request.user.is_authenticated()

2.校验用户点赞点踩的这篇文章是否是自己写的

3.校验当前用户是否已经对这篇进行过点赞或者点踩

4.修改数据记录  在文章表中和点赞点踩表都要记录

用到了F查询
models.Article.objects.filter(pk=article_id).update(up_num=F('up_num')+1)

在对表数据查询或者创建的时候,如果字段是外键,给字段传一个对象,如果字段是普通字段,那就传一个具体值。(******)最好是这样

article_obj = models.Article.objects.filter(pk=article_id,blog=blog).first()
在Article表中,pk是个普通字段传一个具体指article_id,blog是一个外键,所有传一个blog对象
models.UpAndDown.objects.create(article=article_obj,user=request.user,is_up=is_up)
或者(如果没有对象值,也可以拿具体的值传)
models.UpAndDown.objects.create(article_id=article_id,user=request.user,is_up=is_up)
第一种是根据models字段来写的,第二种是按照数据库字段写法来写的

5.在后端取消标签转义

from django.utils.safestring import mark_safe

mark_safe('请先<a href="/login/">登录</a>')

前端ajax判断:

1.判断点击的是点赞还是点踩

根据点击的标签是否有某个类属性,得到一个字符串格式的布尔值。来判断是点赞还是点踩。

传递文章id和布尔值给后端

回调函数接收后端返回的结果,根据code来判断,符合条件就在修改页面的点赞或者点踩数

三、文章的评论

取消浮动

class="clearfix"

1.做好评论框和评论列表的样式

2.ajax判断是根评论还是子评论,截取不同的内容返回给后端,获取文章id和评论内容传给后端

3.后端POST接收数据,做数据同步,数据要保存到评论表和文章表的评论字段,这里用事务来写。

4.前端接收后端返回的code,进行判断,把用户评论的内容加到评论列表中,需要自己定义列表样式。

5.点击回复,生成子评论。

BBS项目架构的更多相关文章

  1. BBS项目架构实现

    一.注册功能 注册页面搭建 auto_id 数据校验 使用forms组件实现(forms) 创建一个文件夹随意,创建一个.py中 在.py文件中创建类继承form.Form 创建字段实现,实现对字段的 ...

  2. nginx之location、inmp架构详解、BBS项目部署

    本期内容概要 location lnmp架构 部署BBS项目 内容详细 1.location 使用Nginx Location可以控制访问网站的路径 但一个server可以有多个location配置 ...

  3. 7、架构--location、LNMP架构、uwsgi部署、BBS项目部署

    笔记 1.晨考 1.Nginx中常用的模块 autoindex stub_status allow 和 deny basic limit_conn limit_req 2.配置步骤 1.创建连接池 2 ...

  4. BBS项目部署

    1.准备 项目架构为:LNM+Python+Django+uwsgi+Redis   (L:linux,N:nginx,M:mysql) 将bbs项目压缩上传到:  /opt 在shell中直接拖拽 ...

  5. BBS项目-01

    目录 BBS项目 BBS开发流程: BBS表格创建: BBS项目 BBS开发流程: BBS项目: 开发流程: 需求分析 草拟一些项目的大致技术点和流程 架构设计 架构师(框架 语言 数据库 缓存数据库 ...

  6. BBS项目(一)

    目录 BBS项目(一) 项目开发流程 BBS项目 BBS表分析 自关联 表关系图示 BBS项目(一) 项目开发流程 项目分类 针对互联网用户:抖音,淘宝····· 针对公司内部:后台管理系统··· 针 ...

  7. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入

    上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...

  8. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

    再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...

  9. UWP开发之Mvvmlight实践九:基于MVVM的项目架构分享

    在前几章介绍了不少MVVM以及Mvvmlight实例,那实际企业开发中将以那种架构开发比较好?怎样分层开发才能节省成本? 本文特别分享实际企业项目开发中使用过的项目架构,欢迎参照使用!有不好的地方欢迎 ...

随机推荐

  1. JavaWeb之Tomcat(1) —— Tomcat的目录结构

    1. bin 文件夹 存放Tomcat的可执行文件 (1) startup.bat 文件,启动Tomcat服务的批处理文件. (2) shutdown.bat 文件,结束Tomcat服务的批处理文件. ...

  2. JavaWeb之问题集(1) —— Tomcat启动闪退

    1. 问题描述 环境: System:Windows 10 Professional JDK:1.8.0.212 Tomcat:9.0.22 原本可以正常的启动和关闭,后来突然的就无法使用了,无法启动 ...

  3. MYSQL | ERROR 1305(42000) SAVEPOINT *** DOES NOT EXIST

    autocommit模式:在开启情况下,对于每条statement来说,都会自动形成一个commit,也就是会即时对开始和结束一个事务.所以,当出现rollback to savepoint出现这个错 ...

  4. 【阿里云IoT+YF3300】9.快速开发modbus设备驱动

    Modbus是一种串行通信协议,是莫迪康公司为PLC(编程逻辑控制器)通信而设计的协议.Modbus目前已经成为工业领域通信协议的业界标准,大部分的仪器仪表都支持该通信协议.很早以前就开发过基于Mod ...

  5. 在使用PhpSpreadsheet出现空行导入的问题

      在使用PhpSpreadsheet出现空行导入的问题,项目一直报错,原来是读取excel后会多读取几行,或者说读取的行数有错误.因此必须加一个,去除空行.暂时没有研究源码可能源码里面有这样的功能. ...

  6. postgresQL 服务器端守护进程

  7. MQTT基础概念介绍

    https://blog.csdn.net/pipinet123/article/details/60866901 源博客地址:http://blog.csdn.net/pipinet123 MQTT ...

  8. Centos 安装 nginx 特定版本

    CentOS 6.9/7通过yum安装指定版本的Nginx - EasonJim - 博客园https://www.cnblogs.com/EasonJim/p/9020896.html [root@ ...

  9. Java回调机制在RPC框架中的应用示例

    完整源码: https://gitee.com/shiyanjun/x-callback-demo 应用场景描述: 服务提供者在项目启动时,创建并启动一个TCP服务器,然后将自己提供的所有服务注册到注 ...

  10. 二、HTTP请求

    一.测试对象:v2ex的api 文档:https:www.v2ex.com/p/7vpTEc53 api:https://www.v2ex.com/api/topic/hot.json 最热主题:相当 ...