BBS+ BLOG系统(仿博客园)

一、概要

欢迎您使用该BBS+BLOG系统,希望在您使用的过程中体验到便捷和愉快的使用感受,并对我们的软件提出您发现的问题和建议,谢谢。
联系邮箱:liangshuo1994@outlook.com

注意事项:

1、相关文件说明:

tree.txt          该项目的所有文件
requirements.txt 依赖包文件
img-floder 项目效果图
tables 表关系

2、环境安装:

请您在python官网下载python3.5以上版本进行安装。

3、当前程序的所有依赖包及其精确版本号。

请您打开CMD控制台,到依赖包同目录下,执行:pip install -r requirements.txt

4、测试用例文档给您提供了更好的测试思路,您可以通过测试用例达到更好的测试效果

5、该项目博客地址: [https://www.cnblogs.com/venicid/category/1261668.html]

6、github地址: [https://github.com/venicid/cnblog]

7、效果图

二、项目流程

1 搞清楚需求(产品经理)
(1) 基于用户认证组件和AJAX实现登录验证(图片验证码) (2) 基于forms组件和ajax实现注册功能 (3) 设计系统首页 (文章列表渲染) (4) 设计个人站点页面 (5) 文章详情页 (6) 实现文章点赞功能 (7) 实现文章的评论
-------文章的评论
-------评论的评论 (8) 后台管理页面
--- 富文本编辑框
--- 防止xss攻击 2 设计表结构 3 按着每一个功能进行开发 4 功能测试 5 项目部署上线

二、功能实现

  1. login_reg_404模块
	1) 主页
/
2) 注册
/reg/
3) 登录
/login/
/get_validCode/ # 验证码
4) 注销
/logout/
5) 404页面
not_found.html
  1. 个人站点,文章模块
1) 个人站点页面
/alex/ 2) 文章详情页
/alex/articles/4
/digg # 点赞
/comment # 评论
/get_comment_tree # 评论树展示 4)media开放目录
/media
  1. 后台管理
	/cn_backend				   # 主页
/cn_backend/add_article/ # 添加文章
/cn_backend/edit_article/4 # 编辑文章
/delete # 删除

三、所用技术概述

1、验证用户是否登录:用户认证组件

实质:session会话跟踪技术
from django.contrib import auth
通过中间件auth_middleware.py,采用白名单,对url进行控制,替代装饰器@login_requierd,否则每一个函数都有要加装饰器。
from django.utils.deprecation import MiddlewareMixin

2、验证字段:表单forms组件

对每个数据库中的字段进行校验,返回error
from django import forms

3、自定义分页器

分页器pagination.py
解耦
from blog.utils.pagination import MyPaginator # 分页器

4、记录日志log

settings配置文件,终端打印sql语句
mylog.py 日志文件,解耦,终端打印并在log文件记录用户操作
import logging

5、模板继承

{% extends 'base.html' %}

{% block site-header %}

{% endblock %}

6、ORM表关系

一对一(user blog)
一对多(user article)
多对多(article tag)

7、注意点:

1) 时区:
settings.py配置
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False 2) 静态文件目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]

8、连接mysql数据库

settings配置
# 连接mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cnblog', # 要连接的数据库,连接前需要创建好
'USER': 'root', # 连接数据库的用户名
'PASSWORD': 'root', # 连接数据库的密码
'HOST': '127.0.0.1', # 连接主机,默认本级
'PORT': 3306, # 端口 默认3306
}
}

9、评论后发送邮件

settings文件配置
# 发送邮件
EMAIL_USE_SSL = True
# EMIAL_HOST = 'smtp.exmail.qq.com' # 如果是163 改成smtp.163.com
EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = '719633333@qq.com' # 账号
EMAIL_HOST_PASSWORD = 'or333333ndzubdie' # qq邮箱的授权码而不是密码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER views视图
from django.core.mail import send_mail # 发送邮件 # 多进程发送邮件
t = threading.Thread(target=send_mail, args=("你的文章【%s】新增了一条评论内容" % article_obj.title,
content,
settings.EMAIL_HOST_USER,
[request.user.email],
))
t.start()

10、验证码

PIL模块生成验证码
from PIL import Image, ImageDraw, ImageFont

11、自定义tag标签

from django import template
register = template.Library()
@register.inclusion_tag("blog/classification.html")
def get_classification_style(username):

12、数据库事务操作

from django.db import transaction  # 事务操作

13、富文本编辑框

KindEditor

14、防止xss攻击

from bs4 import BeautifulSoup

四、鸣谢

感谢在开发过程中的老师和同学们的帮助。

9 README,全套代码的更多相关文章

  1. POJ1389:Area of Simple Polygons——扫描线线段树题解+全套代码注释

    http://poj.org/problem?id=1389 题面描述在二维xy平面中有N,1 <= N <= 1,000个矩形.矩形的四边是水平或垂直线段.矩形由左下角和右上角的点定义. ...

  2. 美客分销商城-接力购源码系统,全开源代码可进行二次开发,微信小程序分销商城

    1. 准备服务器.域名(SSL证书).认证的微信小程序.微信支付商户号 2. 系统功能简介 三.演示案例,微信扫码查看 四.后台管理系统 五. 全套开源源码,进行二次开发 六.本系统完美运营,全套代码 ...

  3. 代码版本控制[version control]之Git

    如何多人协同开发同一个项目? 使用代码版本控制[version control]软件, 目前市面上比较流行的代码版本控制器有: git,svn,csv 1. 使用git管理代码版本 本项目使用git管 ...

  4. Android 4.4 全套源代码及子模块源代码的下载方法

    博文<Android源代码下载--用git clone实现单个文件夹下载>介绍了採用git clone方法下载Android单个文件夹源代码的方法,这篇文章已经有四年的历史,这期间Goog ...

  5. 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

    1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...

  6. fir.im Weekly - 如何打造 Github 「爆款」开源项目

    最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...

  7. 史上最详细git教程

    题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...

  8. 两年来的core折腾之路几点总结,附上nginx启用http2拿来即用的配置

    序:一年多没更新博客园的内容了,core已经发生了翻天覆地的变化,想起2014年这时候,我就开始了从当时还叫k的那套preview都不如的vnext搭建这套系统,陆陆续续它每一次升级,我也相应地折腾, ...

  9. git详解

    Git使用教程   source: http://www.cnblogs.com/tugenhua0707/p/4050072.html 一:Git是什么? Git是目前世界上最先进的分布式版本控制系 ...

随机推荐

  1. Oracle EBS 更改物料说明后,在MTL_SYSTEM_ITEMS_B表中无变化

    需要再中文和英文环境同时修改: 程序里,可以通过初始session语言环境来解决.

  2. 向服务器post或者get数据返回

    #region 向服务器端Get值返回 /// <summary> /// 向服务器端Get返回 /// </summary> ///<see cref="Au ...

  3. [控件] LineAnimationView

    LineAnimationView 效果 说明 水平循环无间隔播放动画效果,用于loading的界面 源码 https://github.com/YouXianMing/UI-Component-Co ...

  4. 山寨今日头条的标题title效果

    山寨今日头条的标题title效果 效果: 源码: // // ViewController.m // 今日头条 // // Created by YouXianMing on 14/11/26. // ...

  5. Linux 用户和用户组详解

    用户分类 超级用户:UID范围 0 root用户:uid=0(root) gid=0(root) groups=0(root) 普通用户:由管理员创建,UID范围(500-65535) --> ...

  6. CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

    深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...

  7. Android混合式开发(Hybrid)

    安卓混合式开发(Hybrid) 1 环境搭建 1.1 首先,下载 Android Studio (Intellij Idea) 下载地址:http://www.android-studio.org/ ...

  8. SQLServer创建链接服务器

    --SQLServer创建链接服务器----1.访问接口中Oracle接口 属性 选择 允许进程内-- --删除链接服务器EXEC master.dbo.sp_dropserver @server=N ...

  9. 如何检查oracle的归档空间是否满了

    如何检查oracle的归档空间是否满了   关于如何检查归档空间是否慢了,大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际 ...

  10. BZOJ5329:[SDOI2018]战略游戏(圆方树,虚树)

    Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏. 这款战略游戏的地图由n个城市以及m条连接这些城市的双向道路构成,并且从任意一个城市出发总能沿着 ...