日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flask 实战:如何从零开发“知乎”

發(fā)布時間:2024/4/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask 实战:如何从零开发“知乎” 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作為當(dāng)下十分火熱的問答社區(qū),知乎聚集了大量問題者和答題者。

但不少朋友在逛知乎的同時,也不禁想要開發(fā)一個像“知乎”這樣的問答社區(qū),既能夠問題答題,也能擁有用戶評論、點(diǎn)贊、收藏、瀏覽量等諸多完善的功能。

今天,為大家呈上一個步驟詳細(xì)的問答社區(qū)開發(fā)訓(xùn)練營《Flask實(shí)現(xiàn)一個問答社區(qū)》,手把手幫助有一定web基礎(chǔ)的同學(xué)開發(fā)出屬于自己的簡易“知乎”,并有完整源碼可供下載。

此訓(xùn)練營采用的開發(fā)環(huán)境均為實(shí)驗(yàn)樓提供的在線開發(fā)環(huán)境,無需下載任何軟件。

廢話不多說,先看看本訓(xùn)練營最終實(shí)現(xiàn)的社區(qū)效果:


教程節(jié)選:

(完整源碼和教程可查看《Flask實(shí)現(xiàn)一個問答社區(qū)》獲取。)

一、訓(xùn)練營簡介

本訓(xùn)練營的目標(biāo)是使用 Python 的輕量級 Web 框架 Flask 和經(jīng)典模塊化前端框架 layui 實(shí)現(xiàn)一個社區(qū)項(xiàng)目。實(shí)現(xiàn)功能包括:用戶注冊、登錄、郵件激活、發(fā)帖、回帖、點(diǎn)贊、回復(fù)、采納、刪帖、結(jié)帖以及 flask-admin 后臺管理等功能。

二、Flask簡介

Flask 最初是作為愚人節(jié)的玩笑誕生的,后來在很短的時間內(nèi)大受好評,迅速在 Python Web 開發(fā)者中流行開來。如今,Flask 已經(jīng)成為輕量級 Web 框架的代言人。

Flask 提供的是一個最小化的 Web 框架,對于多年開發(fā)經(jīng)驗(yàn)的老手,可以在此基礎(chǔ)上自定義任何你想要添加的功能;而對于初學(xué)者,同樣可以利用社區(qū)中豐富的資源擴(kuò)展快速上手。在這次訓(xùn)練營的學(xué)習(xí)過程中,大家會慢慢感受到 Flask 這一特性的魅力。

三、開發(fā)環(huán)境和配置

1.實(shí)驗(yàn)簡介

本章介紹 virtualenv 搭建開發(fā)環(huán)境,以及項(xiàng)目的一些基本配置。

本章主要介紹使用 virtualenv 新建環(huán)境,創(chuàng)建項(xiàng)目的配置文件并添加配置,最后使用 Flask Script 擴(kuò)展運(yùn)行項(xiàng)目返回一個 Hello,World 頁面。

知識點(diǎn)

  • virtualenv 的使用
  • Flask 應(yīng)用基本結(jié)構(gòu)
  • Flask Scrip
  • t 擴(kuò)展

項(xiàng)目結(jié)構(gòu)

本章項(xiàng)目的文件結(jié)構(gòu)為:

$ tree PyFlyPyFly |-- fly_bbs|-- __init__.py|-- config.py|-- controllers|-- __init__.py |-- manage.py

2.環(huán)境準(zhǔn)備

我們使用 Python3.5 和 Flask1.1.1 來實(shí)現(xiàn)項(xiàng)目,實(shí)驗(yàn)環(huán)境已經(jīng)安裝了 Python3.5 。

我們用 pip 包管理工具來安裝我們的 Flask 框架和相應(yīng)擴(kuò)展。在實(shí)驗(yàn)樓的線上環(huán)境中已經(jīng)安裝了 pip 。

3.virtualenv簡介

通常在開發(fā) Python 應(yīng)用程序的時候,系統(tǒng)中會存在一個或多個 Python 解釋器版本,例如實(shí)驗(yàn)環(huán)境中就有 Python2.7 和 Python3.5 這兩個。

如果我們要使用 Python3.5 同時開發(fā)多個應(yīng)用程序,那這些應(yīng)用程序都會共用一個 Python,就是安裝系統(tǒng)的Python3.5 。如果兩個項(xiàng)目使用不同版本的依賴包,就會出現(xiàn)沖突。

這種情況下,每個應(yīng)用需要各自擁有一套“獨(dú)立”的 Python 運(yùn)行環(huán)境。virtualenv 就是用來為一個應(yīng)用創(chuàng)建一套“隔離”的 Python 運(yùn)行環(huán)境。

實(shí)驗(yàn)環(huán)境中已經(jīng)安裝了 virtualenv ,在終端命令行執(zhí)行如下命令可以查看:

shiyanlou:Code/ $ pip3 freeze | grep -i virtualenv virtualenv==16.7.5 virtualenv-clone==0.5.3

如果在你自己的本地環(huán)境下安裝此包,可執(zhí)行此命令使用 pip 包管理工具安裝:

$ sudo pip3 install virtualenv

在實(shí)驗(yàn)環(huán)境中,pip 是 Python 2.7 的包管理工具,pip3 是 Python3.5 的包管理工具,要注意區(qū)分。

使用 virtualenv 的沙盒環(huán)境來進(jìn)行開發(fā),不僅可以使我們避免不同項(xiàng)目不同版本的麻煩,同時它還支持使用 pip freeze > requirements.txt 把自己沙盒環(huán)境中的所有依賴包信息導(dǎo)出到一個 requirements.txt 文件中。這樣當(dāng)你切換的一個新環(huán)境的時候,不需要一個一個的去下載項(xiàng)目需要的依賴,只需要新環(huán)境開啟后,在終端輸入 pip install -r requirements.txt,pip 就會自動從網(wǎng)上下載并安裝所有包。

4.開始使用 virtualenv

首先,我們從終端進(jìn)入到 /home/shiyanlou/Code 目錄下,新建一個虛擬環(huán)境:

shiyanlou:~/ $ cd Code shiyanlou:Code/ $ virtualenv -p python3 venv Running virtualenv with interpreter /usr/bin/python3 Already using interpreter /usr/bin/python3 Using base prefix '/usr' New python executable in /home/shiyanlou/Code/venv/bin/python3 Also creating executable in /home/shiyanlou/Code/venv/bin/python Installing setuptools, pip, wheel... done.

這條命令會在 Code 文件夾中新建一個文件,pipenv 會把所有下載的包都裝進(jìn) venv 這個文件。其中 -p 選項(xiàng)后面的參數(shù)用于指定 Python 解釋器的版本,Python3 就指的是 Python3.5:

shiyanlou:Code/ $ python3 -V Python 3.5.2

最后一個參數(shù) venv 是自定義的虛擬環(huán)境名字,現(xiàn)在可以看到 Code 目錄下已經(jīng)有了虛擬環(huán)境的相關(guān)目錄結(jié)構(gòu):

shiyanlou:Code/ $ ll 總用量 7K drwxrwxr-x 5 shiyanlou shiyanlou 4.0K 12\u6708 7 15:06 venv

接下來,激活并進(jìn)入虛擬環(huán)境,這是固定的命令:

shiyanlou:Code/ $ source venv/bin/activate (venv) shiyanlou:Code/ $

可以看到命令行提示符前面有 (venv) 字樣。現(xiàn)在就進(jìn)入到了虛擬環(huán)境,可以使用虛擬環(huán)境中的 Python 解釋器和 pip 包管理工具。注意在虛擬環(huán)境里使用它們,無需在后面加 “3” ,python 和 pip ,不需要寫成 python3 和 pip3 。

在虛擬環(huán)境中安裝 flask 包:

(venv) shiyanlou:Code/ $ pip install flask Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/ Collecting flask ... ...

如果你在本地操作,要像上面的步驟所示,創(chuàng)建虛擬環(huán)境并安裝所需依賴包。

此外還需大家注意,我們的實(shí)驗(yàn)環(huán)境不能保存,每次啟動都是新的默認(rèn)環(huán)境,所以大家一定要在實(shí)驗(yàn)完成后保存好代碼,推薦使用 GitHub 來存儲項(xiàng)目代碼。

對于 GitHub 和 Git 操作不熟悉的同學(xué),可以學(xué)習(xí)《 Git 與 GitHub 入門實(shí)踐 》這門優(yōu)秀的免費(fèi)課程。

接下來開始我們的項(xiàng)目。

5.新建項(xiàng)目主目

在 Code 目錄下新建一個子目錄作為整個項(xiàng)目的主目錄。就叫它 PyFly。再在 PyFly 里面新建一個 fly_bbs 文件存放我們的應(yīng)用內(nèi)容。然后創(chuàng)建配置文件 configs.py :

$ mkdir -p PyFly/fly_bbs $ cd PyFly $ touch fly_bbs/configs.py

在 configs.py 文件中添加如下所示代碼:

import osclass DevConfig:'''開發(fā)環(huán)境配置'''MONGO_URI = 'mongodb://localhost:27017/pyfly'class ProConfig(DevConfig):'''生產(chǎn)環(huán)境配置'''configs = {'Dev': DevConfig,'Pro': ProConfig }

6.創(chuàng)建視圖函數(shù)

在 fly_bbs 目錄下新建一個子目錄 controllers ,用來放置我們項(xiàng)目的交互邏輯:

$ cd /home/shiyanlou/Code/PyFly/fly_bbs $ mkdir controllers $ touch controllers/__init__.py

這里先實(shí)現(xiàn)一個返回 Hello,World 頁面的函數(shù),在 controllers/init.py 文件里寫入:

def config_route(app):@app.route('/')def home():return '<h1>Hello, World!</h1>'

7.創(chuàng)建初始化app的函數(shù)

在 fly_bbs 目錄下新建 init.py 文件并寫入創(chuàng)建應(yīng)用的相關(guān)代碼:

from flask import Flask from .configs import configs from .controllers import config_routedef create_app(config_name):app = Flask(__name__)# from_object 會從傳入的對象中讀取配置信息app.config.from_object(configs[config_name])# controllers 中的路由函數(shù)config_route(app)return app

8.使用Flask Script

為了更容易地進(jìn)行后面內(nèi)容的實(shí)現(xiàn)和學(xué)習(xí),我們使用 flask-script 來運(yùn)行我們的應(yīng)用。

在終端虛擬環(huán)境下執(zhí)行如下命令安裝此包:

$ pip install flask-script

Flask Script 有一些自帶的默認(rèn)命令,可以用來運(yùn)行應(yīng)用,或者開啟帶應(yīng)用上下文的命令行。

在 PyFly 目錄新建 manager.py 文件,并寫入如下代碼:

from fly_bbs import create_app from flask_script import Manager import osconfig_name = os.environ.get('FLASK_CONFIG') or 'Dev'app = create_app(config_name) # 把 app 傳給 Manager 對象 manager = Manager(app)if __name__ == '__main__':manager.run()

9.運(yùn)行應(yīng)用

現(xiàn)在,你可以通過 python3 manager.py runserver 命令來運(yùn)行開發(fā)環(huán)境服務(wù)器了。

運(yùn)行成功,訪問 http://127.0.0.1:5000/ 就可以看到我們的項(xiàng)目顯示的 Hello,World 了。

10.本章總結(jié)

本節(jié)實(shí)驗(yàn)介紹了虛擬環(huán)境的作用以及如何使用 virtualenv 創(chuàng)建虛擬環(huán)境,在 Code 目錄下創(chuàng)建了項(xiàng)目最初的目錄結(jié)構(gòu),編寫了配置文件 configs.py 并創(chuàng)建了一個視圖函數(shù)以打開網(wǎng)站首頁,并對 flask-script 進(jìn)行了使用。

下一節(jié)實(shí)驗(yàn)我們學(xué)習(xí)數(shù)據(jù)庫的使用和藍(lán)圖的創(chuàng)建。


獲取完整教程和源碼,可訪問實(shí)驗(yàn)樓官網(wǎng)的《Flask實(shí)現(xiàn)一個問答社區(qū)》獲取。

總結(jié)

以上是生活随笔為你收集整理的Flask 实战:如何从零开发“知乎”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。