基于flask,flask组件
本教程回答了一个问题,“我如何将Vue.js集成到Flask中?”因为您正在阅读本教程,我假设您知道Flask是为快速Web开发而构建的Python微框架。如果你不熟悉烧瓶,或者你认为我可能会说热水瓶,那么我建议你在继续本教程之前阅读这里。
Vue.js是一个用于构建用户界面的渐进式框架。如果你不熟悉,你可以在这里阅读。
现在你已经熟悉了Flask和Vue.js,我们可以开始了。
00-1010让我们先安装一些依赖项:
PIP-User CookieCutter CookieCutter是一个很棒的命令行工具,用来快速指导项目模板。我们用的是cookiecutter,所以不需要花太多时间配置项目。请记住,Flask不像Django那样包含电池,所以必须在项目的初始设置中投入大量工作。
现在您已经安装了Cookiecutter,我们需要获取一个项目模板。对于本教程,我们只需要一个简单的Flask API。运行以下命令3360。
Cookie GH : Mobidewke/Cookie Cutter-Flask-API-Starter您应该得到以下输出:
repo _ name[API-starter]: flask-vue js-tutorial
api_name [Api]: api
应该创建一个名为flask-vuejs-tutorial的文件夹。导航到该文件夹,您应该会看到以下结构:
应用程序
config.py
工厂. py
__init__。巴拉圭
模特
base.py
数据库. py
datastore.py
__init__。巴拉圭
资源
example.py
__init__。巴拉圭
utils.py
pytest.ini
自述. md
要求. txt
设置. py
测试
__init__。巴拉圭
测试_app.py
测试_模型. py
测试_资源. py
utils.py
单元测试
wsgi.py很美吧?
在继续之前,我们需要设置一个虚拟环境。执行:
现在,你可以用你喜欢的IDE/文本编辑器打开项目文件夹。在继续下一步之前,请记住激活虚拟环境。
现在我们可以安装依赖项了。执行:
当pip install -r requirements.txt完成后,打开app/config.py你会注意到这个API模板使用postgres数据库连接。如果不介意,可以用必要的凭证设置postgres db。否则,请使用以下代码行代替该文件夹的内容:
导入操作系统
类别配置:
错误_ 404 _帮助=假
SECRET _ KEY=OS . getenv( APP _ SECRET , secret key )
SQLALCHEMY_DA
TABASE_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一旦安装完成后, 您可以使用以下命令检查版本是否正确(3.x):# OR
yarn global add @vue/cli
vue --version在项目文件夹的根目录中运行:
vue create web我选择 default (babel, eslint) 作为预设,并选择 yarn 作为我的包裹管理器。如果您熟悉node项目,则可以继续并选择您的首选选项。如果没有,请遵循本教程的默认设置。
现在导航到新建的 web 文件夹并运行:
yarn serve如果导航到http://localhost:8080/, 您应该可看到 Welcome to Your Vue.js App 文本。# OR
npm run serve
现在我们准备开始集成。
在 Web 文件夹中,创建一个名为 vue.config.js
的文件并粘贴以下内容:
const path = require('path');在这里, 为 Vue cl i定义了一些配置。我们只对三个字段感兴趣: assetsDir, baseUrl, outputDir。module.exports = {
assetsDir: '../static',
baseUrl: '',
publicPath: undefined,
outputDir: path.resolve(__dirname, '../app/templates'),
runtimeCompiler: undefined,
productionSourceMap: undefined,
parallel: undefined,
css: undefined
};
让我们从 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
下添加以下几行:
.....在这里, 我们正在注册之前创建的蓝图(blueprint)。app = f.flask
from .views import sample_page
app.register_blueprint(sample_page, url_prefix='/views')
我们为蓝图(blueprint)指定了url前缀,以便于可以从
/views/sample
访问我们的vue应用程序。真相时刻到啦。
打开 http://127.0.0.1:5000/views/sample, 您应该能看到以下内容:
如果您检查日志, 将看到正确加载了内置资源:
* Serving Flask app "wsgi:app"您已经成功将Flask与Vuejs集成* 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 -
推荐教程:《Python教程》以上就是在 Flask 中集成 Vue的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。