2018 年不容錯過的 Django 全棧項目 YaDjangoBlog
0x00 前言
寫在前面的話:不好意思,標題難以免俗,起了個很俗氣的名字。
這是我的一個全棧類型 Django 開源項目的系列講解教程的目錄。
為什麼寫這系列的文章呢?目的總的來說有兩個:
- 一是希望更多的人通過本系列的教程更好的認識 Django 開發技術棧或者說是 Web 開發技術棧,讓更多的 Pythonist 更順暢的進入 Django 開發的世界。
- 二是希望藉由這個持續更新的過程讓自己更加深入理解 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 項目地址
- 前端代碼 https://github.com/twocucao/YaVueBlog
- 後端代碼 https://github.com/twocucao/YaDjangoBlog
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 特別感謝
- ansible django stack: https://github.com/jcalazan/ansible-django-stack
- cookiecutter-django: https://github.com/pydanny/cookiecutter-django
- djangopackages: https://github.com/djangopackages/djangopackages
- 董偉明 關於 ElasticSearch 的幾篇文章 http://www.dongwm.com/archives/%E7%9F%A5%E4%B9%8ELive%E5%85%A8%E6%96%87%E6%90%9C%E7%B4%A2%E4%B9%8B%E4%BD%BF%E7%94%A8Elasticsearch%E6%90%9C%E7%B4%A2/
- 各個組件的開發者們
- ElasticSearch
- PostgreSQL
- Redis
- RabbitMQ
- Nginx
- Docker
1.4 項目截圖
好,講了半天有的沒的,還是貼點圖吧,畢竟我不是 Markdown 程序員
我們先看看能看得見的前端頁面
主頁
博客詳情
這是一個很普通的 Archive 頁面
這是以 Elasticsearch 為支持的 搜索功能
Django 自帶後台
前後端分離怎麼能少的了 rest api 的實現與便捷的前端調試?
Django Debug Tools 幫你迅速調優介面
我們再先看看能看得見的開發界面
在終端執行 tmuxinator start yavueblog 就可以自動運行所有任務
前端運行狀態
後端運行狀態
當然,你可以直接用客戶端連接到對應的服務上檢查組件的運行狀態
0x02 系列教程目錄
2.1 教程注意項
- 本文的開發環境配置僅僅限於 macOS 上,如果讀者使用的是 Windows / 可能需要自己搞定環境的配置。不過筆者使用了 Docker 進行環境配置,應該配置環境會省事很多。
- 在閱讀本教程,請讀者至少跟著 Django 官方的教程跟著走一遍。不要零基礎一通瞎搞。
- 如果在使用過程中出現問題,請在 ISSUE 提供儘可能多的信息,將問題描述清楚。
本系列教程並不按照一步一步增加代碼的方式寫教程。
我先帶著大家搭建好整個項目框架,然後從不同的視角開介紹這個項目,比如:
- 某個模塊的 models 是如何設計的?有哪些卧槽居然可以這麼用的寫代碼方式。
- Django User 如何做擴展?同樣在 Django 的生態圈裡面,哪些場景有哪些值得圍觀的包,比如 guardian
- Restful API 應該如何寫,Django 裡面的 Rest API 應該如何寫?會有哪些生產效率 guangguangguang 提升上去的使用方法?許可權怎麼做?限流怎麼搞?
- Py.test TDD 測試驅動開發了解一下?
- 使用 Tmux 等合理工具的優雅的單終端多開。
2.2 教程目錄
- Django 全棧開發教程 - 2018 年不容錯過的 Django 全棧項目 -- 目錄篇
- Django 全棧開發教程 - YaDjangoBlog 的開發環境配置
- Django 全棧開發教程 - YaDjangoBlog 的前後端初步設計
- Django 全棧開發教程 - YaDjangoBlog 的後端組件配置
- Django 全棧開發教程 - YaDjangoBlog 的後端初步實現
- Django 全棧開發教程 - YaDjangoBlog 的前端實現 YaVueBlog
- Django 全棧開發教程 - YaDjangoBlog 的後端組件之 Redis
- Django 全棧開發教程 - YaDjangoBlog 的後端組件之 PostgreSQL
- Django 全棧開發教程 - YaDjangoBlog 的後端組件之 Elasticsearch
- Django 全棧開發教程 - YaDjangoBlog 的後端組件之 RabbitMQ
- Django 全棧開發教程 - YaDjangoBlog 的生產環境部署
0xEE. 參考鏈接
本文將長期更新, 更新的教程會在本文的 ChangeLog 中標註.
還猶豫啥,快上車吧
- 前端代碼 https://github.com/twocucao/YaVueBlog
- 後端代碼 https://github.com/twocucao/YaDjangoBlog
ChangeLog:
- 2018-02-21 重修文字
- 2018-02-22 微調文字, 更新第一篇環境配置
推薦閱讀:
※ELB配合Unicorn集群導致響應緩慢的問題
※在Ubuntu 16.04環境下安裝Docker-CE(附視頻教程)
※Say Hello To TensorFlow
※乾貨 | Docker文件系統的分層與隔離
※如何通俗解釋Docker是什麼?