搜尋
首頁後端開發Python教學在 Flask 中整合 Vue

在 Flask 中整合 Vue

Jun 15, 2020 pm 06:09 PM
pythonvue

在 Flask 中整合 Vue

本教學回答了這麼一個問題," 我怎麼把Vue.js 整合到Flask中?" 因為你正在閱讀本教程,因此我假設您知道Flask 是一個為快速Web 開發而建立的Python 微框架。如果您不熟悉 Flask,或者您認為我可能要說保溫瓶,那麼我建議在繼續本教程之前,您先閱讀一下這裡。

Vue.js 是用來建立使用者介面的漸進式框架。如果您不熟悉它,可以在這裡上閱讀有關內容。

現在您已經熟悉了 Flask 和 Vue.js,我們可以開始了。

Flask設定

讓我們先安裝幾個依賴:

pip install --user cookiecutter

Cookiecutter 是一個很棒的命令列工具,用來快速引導項目模板。我們正在使用 cookiecutter,所以我們不需要花太多時間來配置專案。請記住, Flask 並不像 Django 一樣包含電池, 因此必須在專案的初始設定中投入大量工作。

現在您已經安裝了Cookiecutter, 我們需要抓取一個專案範本。對於這個教程, 我們只需要一個簡單的 Flask API。執行以下指令:

cookiecutter gh:mobidevke/cookiecutter-flask-api-starter

您應該得到以下輸出:

repo_name [api-starter]: flask-vuejs-tutorial
api_name [Api]: api
version [1.0.0]: 1.0.0

應該會建立一個名為 flask-vuejs-tutorial 的資料夾。導航到該資料夾,您應該看到以下結構:

├── app
│   ├── config.py
│   ├── factory.py
│   ├── __init__.py
│   ├── models
│   │   ├── base.py
│   │   ├── database.py
│   │   ├── datastore.py
│   │   └── __init__.py
│   ├── resources
│   │   ├── example.py
│   │   └── __init__.py
│   └── utils.py
├── pytest.ini
├── README.md
├── requirements.txt
├── settings.py
├── tests
│   ├── conftest.py
│   ├── __init__.py
│   ├── test_app.py
│   ├── test_models.py
│   ├── test_resources.py
│   └── utils.py
├── unit-tests.sh
└── wsgi.py

很美麗,不是嗎 ?

在繼續之前,我們需要設定一個虛擬環境。執行:

python -m venv venv

現在,您可以使用喜歡的IDE /文字編輯器開啟專案資料夾。在繼續下一步之前,請記住要啟動虛擬環境。
現在我們可以安裝依賴項。執行:

pip install -r requirements.txt

完成後,開啟 app/config.py。您會注意到,此API範本使用了postgres資料庫連線。如果您不介意,可以使用必要的憑證設定postgres db。否則,請使用以下程式碼行代替該資料夾的內容:

import os

class Config:
    ERROR_404_HELP = False

    SECRET_KEY = os.getenv('APP_SECRET', 'secret key')

    SQLALCHEMY_DATABASE_URI = 'sqlite:///tutorial.db'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    DOC_USERNAME = 'api'
    DOC_PASSWORD = 'password'

class DevConfig(Config):
    DEBUG = True

class TestConfig(Config):
    SQLALCHEMY_DATABASE_URI = 'sqlite://'
    TESTING = True
    DEBUG = True

class ProdConfig(Config):
    DEBUG = False

config = {
    'development': DevConfig,
    'testing': TestConfig,
    'production': ProdConfig
}

我們已經刪除了所有的 postgres 配置,以支援 sqlite 的配置。如果您要使用 postgres,請保持 conf.py 檔案不變。
現在我們需要匯出 Flask 應用程式。執行:

export FLASK_APP=wsgi:app

現在我們已經完成了 Flask 的 API 的設置,執行:

flask run

然後在瀏覽器上開啟 http://127.0.0.1:5000/example。您應該可以看到以下內容:

{"message": "Success"}

Vue.js設定

現在我們的 API 已經準備就緒,我們可以繼續引導vue應用程式了。
我們需要做的第一件事就是安裝 vue cli。執行:

npm install -g @vue/cli
# OR
yarn global add @vue/cli

一旦安裝完成後, 您可以使用以下命令檢查版本是否正確(3.x):

vue --version

在專案資料夾的根目錄中執行:

vue create web

我選擇 default (babel, eslint) 作為預設,並選擇 yarn 作為我的包裹管理器。如果您熟悉node項目,則可以繼續並選擇您的首選選項。如果沒有,請遵循本教學的預設設定。
現在導航到新建的 web 資料夾並執行:

yarn serve
# OR
npm run serve

如果導航到http://localhost:8080/, 您應該可以看到 Welcome to Your Vue.js App 文字。

現在我們準備開始整合。

在Web 資料夾中,建立一個名為 vue.config.js 的檔案並貼上以下內容:

const path = require('path');

module.exports = {
  assetsDir: '../static',
  baseUrl: '',
  publicPath: undefined,
  outputDir: path.resolve(__dirname, '../app/templates'),
  runtimeCompiler: undefined,
  productionSourceMap: undefined,
  parallel: undefined,
  css: undefined
};

在這裡, 為Vue cl i定義了一些配置。我們只對三個欄位感興趣: assetsDir, baseUrl, outputDir
讓我們從 outputDir 開始。
此資料夾保存已建置的 Vue 檔案的位置,即將儲存將載入 Vue 應用程式的 index.html 的資料夾。如果您觀察這提供的路徑, 您將會注意到該資料夾位於flask應用程式的 app 模組內部。
assetsDir 保存用於存放靜態檔案(css, js 等)的資料夾。 注意 它是相對於 outputDir 欄位中提供的值的。
最後,  baseUrl 欄位將在 index.html 中儲存靜態檔案的路徑前綴。您可以檢查 這個 以了解有關其他設定選項的更多資訊。
現在運行:

yarn build
# OR
npm run build

如果打开 app 文件夹, 您会注意到已经创建了两个新文件夹, 即templates 和 static。 它们包含内置的vue文件。
现在在app 文件夹中创建一个 views.py 文件并粘贴以下内容:

from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

sample_page = Blueprint('sample_page', 'sample_page', template_folder='templates')

@sample_page.route('/sample')
def get_sample():
    try:
        return render_template('index.html')
    except TemplateNotFound:
        abort(404)

现在,这是怎么回事呢?
好吧,现在我们创建一个名为 sample_page 的 Flask 蓝图(blueprint),并添加路由。这条路由将渲染我们的 Vue 应用。

打开 __init__.py 文件并在 app = f.flask 下添加以下几行:

.....
app = f.flask
from .views import sample_page

app.register_blueprint(sample_page, url_prefix='/views')

在这里, 我们正在注册之前创建的蓝图(blueprint)。
我们为蓝图(blueprint)指定了url前缀,以便于可以从 /views/sample访问我们的vue应用程序。

真相时刻到啦。

打开 http://127.0.0.1:5000/views/sample, 您应该能看到以下内容:

在 Flask 中整合 Vue

如果您检查日志, 将看到正确加载了内置资源:

 * Serving Flask app "wsgi:app"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [24/May/2019 20:45:02] "GET /views/sample HTTP/1.1" 200 -
127.0.0.1 - - [24/May/2019 20:45:02] "GET /static/css/app.e2713bb0.css HTTP/1.1" 200 -
127.0.0.1 - - [24/May/2019 20:45:02] "GET /static/js/chunk-vendors.b10d6c99.js HTTP/1.1" 200 -
127.0.0.1 - - [24/May/2019 20:45:02] "GET /static/js/app.c249faaa.js HTTP/1.1" 200 -
127.0.0.1 - - [24/May/2019 20:45:02] "GET /static/img/logo.82b9c7a5.png HTTP/1.1" 200 -
127.0.0.1 - - [24/May/2019 20:45:02] "GET /views/favicon.ico HTTP/1.1" 404 -

您已经成功将Flask与Vuejs集成 

推荐教程:《Python教程

以上是在 Flask 中整合 Vue的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何提高jieba分詞在景區評論分析中的準確性?如何提高jieba分詞在景區評論分析中的準確性?Apr 02, 2025 am 07:09 AM

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

如何使用正則表達式匹配到第一個閉合標籤就停止?如何使用正則表達式匹配到第一個閉合標籤就停止?Apr 02, 2025 am 07:06 AM

如何使用正則表達式匹配到第一個閉合標籤就停止?在處理HTML或其他標記語言時,常常需要使用正則表達式來�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。