项目说明
- 项目使用前后端分离:前端使用Vue全家桶;后端Django+Django REST framework
- 使用MySQL数据库进行数据的存储;使用Redis数据库提供缓存支持和Celery的任务队列;使用Elasticsearch数据库提供全文搜索的支持
- 使用Docker Compose方便的进行部署和开发;使用nginx进行内部的反向代理,分离静态文件请求和api请求;使用Gunicorn作为Django对接的WSGI服务器,提供更好的性能和异步IO的支持;内含Jenkinsfile提供CD支持
- 后端实现了完整的blog功能逻辑:完整的blog及相关内容增删改查功能;动态的管理网站的logo等信息;网站的整体状况统计(每日的访客,点赞,评论数,以及访客所在地址);demo模式:方便直接浏览后台却没有修改权限;使用缓存降低MySQL数据库的访问次数并提高访问效率;Celery异步任务:将IP地址查询和统计信息任务分离出去不影响访问效率;完整的单元测试确保代码可靠
- 美观好用的前端:使用Vue Cli构筑的Vue作为前端框架;iView作为主要UI库;Vue Router作为SPA的路由控制器;Vuex进行前端全局的数据管理;Echart提供前端图表化展示数据;可以支持不同设备的页面自适配
- 本地内置ip2region数据库直接查询IP来源地址,节省网络资源。使用Baidu Map的API进行地址和经纬度的对应,以及配合inMap进行前端的可视化来源地图的展示
- 前台
- 后台
- 发表文章
- 发表评论
- 前端效果
- 页面自适配
- 点击右上角头像
2.选择登录,之后点击demo模式登录
- 登录成功后右上角进入管理中心
- backend :后端代码
- docker-compose-file :docker compose需要用到的一些文件
- elasticsearch :docker compose构筑elasticsearch用到的文件,包含的换源;更换市区;安装中文分词支持
- front_end :前端代码
- README :本说明用到的一些图片
- static :静态文件,会作为volume挂着到docker中的nginx里面
- volumn :通用的volume,会挂载到docker中相应的容器里面
- docker-compose-dev.yml :开发使用的docker compose file
- docker-compose-test.yml :测试使用的docker compose file,包含flake8测试和覆盖率测试
- 先在本地部署docker compose
- 添加后端secret文件(见本文后面的说明)
- 运行
docker-compose -f docker-compose.yml -f docker-compose-file/run.yml up
- 200:成功
- 400:错误请求(错误参数等)
- 403:没有对应请求权限
- 404:未找到对应请求资源
- 500:服务器内部错误
其他错误码参考django rest framework的错误码:官方文档地址
- model类的ForeignKey内的使用字符串
- manager类不要引用model类,要使用自身model类的relation field的model的时候,使用self.model.{{relation field}}.field.remote_field.model获得对应model类
建表语句
CREATE DATABASE `my_blog` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
直接百度地图开发者中心注册帐号,创建应用即可获得AK
后端机密信息信息存放在后端根目录下的secret.py文件里,这个文件不会被git同步,需要自行添加。
机密信息内容包括:
# django秘钥
SECRET_KEY =
# 数据库用户及密码
DATABASE_ACCOUNT =
DATABASE_PASSWORD =
# 百度AK密匙,用于获取IP的经纬度
BAIDU_AK =
ip搜索比较消耗时间,所以可以选择关闭已使用celery改为异步处理- ip对应地址使用本地搜索,提高效率
- 城市经纬度使用baidu map的api进行,获取匹配前端百度地图的结果
- 使用异步任务拆分这部分功能
后端机密信息信息存放在后端根目录下的secret.py文件里,这个文件不会被git同步,需要自行添加。
export default {
// 百度地图ak
baiduMapAK:
}








