2018 年不容错过的 Django 全栈项目 YaDjangoBlog

6,776 阅读4分钟
原文链接: zhuanlan.zhihu.com

0x00 前言

写在前面的话:不好意思,标题难以免俗,起了个很俗气的名字。

这是我的一个全栈类型 Django 开源项目的系列讲解教程的目录。

为什么写这系列的文章呢?目的总的来说有两个:

  1. 一是希望更多的人通过本系列的教程更好的认识 Django 开发技术栈或者说是 Web 开发技术栈,让更多的 Pythonist 更顺畅的进入 Django 开发的世界。
  2. 二是希望借由这个持续更新的过程让自己更加深入理解 Django 技术栈 Django / DjangoRestFramework / Docker / Vue.JS / Celery / PostgreSQL / Redis / RabbitMQ

为什么说这个项目你不容错过?

  • 新!新!新!保持最新的软件开发版本,E.G: Django 2.0 + Vue.JS 2.5 + PostgreSQL 10 + Celery 4.1.0
  • Django 框架:Django 及其 强大的生态圈
  • 后端组件:PostgreSQL RabbitMQ Redis Ngnix
  • 前端技术:单页应用 前后端分离 (VueJS+Webpack+DjangoRestFramework), 自动化部署
  • Django 社区最佳实践:从配置 / 开发 / 测试 / 部署 全干工程师 (Full Stuff Engineer) 的最新的 DevOps 思考成果。
  • 基本覆盖了进阶 Django 开发所需要的各种组件与操作。
  • 只需要适当的调整,本项目就可以成为你新开项目的最佳脚手架。

本系列文章的面向读者:

  • 目标是 DevOps 的 Pythonist
  • 爱瞎几把折腾的 Pythonist
  • 前后端分离的实践者

生命苦短,赶快上车

Life is Short , I Use Python

0x01 项目介绍

YaDjangoBlog 是另一个关于博客的轮子,但是其野心并不在于仅仅多造一个博客系统,还有通过本项目做 Django 全栈开发的最佳实践。

1.1 项目地址

1.2 项目技术栈

  • 开发与部署环境为 Docker
  • Python 3.5.2
  • 前端 Vue + Webpack + ES2015 + axios
  • 后端 Django 2.0 + DjangoRestFramework + Celery
  • 自动化部署选用工具 Ansible 以及 Docker
  • 后端组件
    • ElasticSearch 用于搜索和推荐
    • PostgreSQL 用于数据持久化
    • Redis 用于 Session / 和缓存
    • RabbitMQ 分布式队列 / 定时任务
    • Nginx 用于反向代理

1.3 特别感谢

1.4 项目截图

好,讲了半天有的没的,还是贴点图吧,毕竟我不是 Markdown 程序员

我们先看看能看得见的前端页面

主页

博客详情

这是一个很普通的 Archive 页面

这是以 Elasticsearch 为支持的 搜索功能

Django 自带后台

前后端分离怎么能少的了 rest api 的实现与便捷的前端调试?

Django Debug Tools 帮你迅速调优接口

我们再先看看能看得见的开发界面

在终端执行 tmuxinator start yavueblog 就可以自动运行所有任务

前端运行状态

后端运行状态

当然,你可以直接用客户端连接到对应的服务上检查组件的运行状态

0x02 系列教程目录

2.1 教程注意项

  1. 本文的开发环境配置仅仅限于 macOS 上,如果读者使用的是 Windows / 可能需要自己搞定环境的配置。不过笔者使用了 Docker 进行环境配置,应该配置环境会省事很多。
  2. 在阅读本教程,请读者至少跟着 Django 官方的教程跟着走一遍。不要零基础一通瞎搞。
  3. 如果在使用过程中出现问题,请在 ISSUE 提供尽可能多的信息,将问题描述清楚。

本系列教程并不按照一步一步增加代码的方式写教程。

我先带着大家搭建好整个项目框架,然后从不同的视角开介绍这个项目,比如:

  1. 某个模块的 models 是如何设计的?有哪些卧槽居然可以这么用的写代码方式。
  2. Django User 如何做扩展?同样在 Django 的生态圈里面,哪些场景有哪些值得围观的包,比如 guardian
  3. Restful API 应该如何写,Django 里面的 Rest API 应该如何写?会有哪些生产效率 guangguangguang 提升上去的使用方法?权限怎么做?限流怎么搞?
  4. Py.test TDD 测试驱动开发了解一下?
  5. 使用 Tmux 等合理工具的优雅的单终端多开。

2.2 教程目录

0xEE. 参考链接

本文将长期更新, 更新的教程会在本文的 ChangeLog 中标注.

还犹豫啥,快上车吧


ChangeLog:

  • 2018-02-21 重修文字
  • 2018-02-22 微调文字, 更新第一篇环境配置