2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

iTwocucao發表於2018-02-21

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 專案地址

  • 前端程式碼 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 程式設計師

我們先看看能看得見的前端頁面

主頁

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

部落格詳情

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog
2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

這是一個很普通的 Archive 頁面

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

這是以 Elasticsearch 為支援的 搜尋功能

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

Django 自帶後臺

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

前後端分離怎麼能少的了 rest api 的實現與便捷的前端除錯?

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog
2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

Django Debug Tools 幫你迅速調優介面

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

我們再先看看能看得見的開發介面

在終端執行 tmuxinator start yavueblog 就可以自動執行所有任務

前端執行狀態

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog
2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

後端執行狀態

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog
2018 年不容錯過的 Django 全棧專案 YaDjangoBlog
2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

當然,你可以直接用客戶端連線到對應的服務商檢查元件的執行狀態

2018 年不容錯過的 Django 全棧專案 YaDjangoBlog
2018 年不容錯過的 Django 全棧專案 YaDjangoBlog

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 教程目錄

  • 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:

  • 2018-02-21 重修文字

相關文章