0x00 前言
寫在前面的話:很差意思,標題難以避免俗,起了個很俗氣的名字。前端
這是個人一個全棧類型 Django 開源項目的系列講解教程的目錄。vue
爲何寫這系列的文章呢?目的總的來講有兩個:ios
- 一是但願更多的人經過本系列的教程更好的認識 Django 開發技術棧或者說是 Web 開發技術棧,讓更多的 Pythonist 更順暢的進入 Django 開發的世界。
- 二是但願藉由這個持續更新的過程讓本身更加深刻理解 Django 技術棧 Django / DjangoRestFramework / Docker / Vue.JS / Celery / PostgreSQL / Redis / RabbitMQ
爲何說這個項目你不容錯過?git
- 新!新!新!保持最新的軟件開發版本,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
- 先後端分離的實踐者
生命苦短,趕快上車github
Life is Short , I Use Pythondjango
0x01 項目介紹
YaDjangoBlog 是另外一個關於博客的輪子,可是其野心並不在於僅僅多造一個博客系統,還有經過本項目作 Django 全棧開發的最佳實踐。axios
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 程序員後端
咱們先看看能看得見的前端頁面api
主頁
博客詳情
這是一個很普通的 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. 參考連接
還猶豫啥,快上車吧
- 前端代碼 https://github.com/twocucao/YaVueBlog
- 後端代碼 https://github.com/twocucao/YaDjangoBlog
ChangeLog: