📖
webpack+vueとdjangoの連携メモ
webpack+vueとdjangoの連携を自分の備忘録としてまとめました。
前提
・djangoとvueはそれぞれ、web画面で表示されていること
vue部分は、私作成の「Webアプリ開発環境構築(vue3+typescript by webpack)」参照。
・参照URL
手順
front側のインストール
npm install webpack-bundle-tracker@0.4.3
front側のコード入力
・入力箇所は追加部分
・「publicPath」について
元のoutputのpathとwebで開いたときのlocalを参考に入力
webpack.config.js
const { VueLoaderPlugin } = require('vue-loader');
const BundleTracker = require('webpack-bundle-tracker'); //追加
module.exports = {
entry:'./src/index.js',
mode: 'development',
output: {
publicPath: 'http://127.0.0.1:5500/event_project/frontend/dist/', // 追加
filename: 'main.js',
},
resolve:{
extensions: [".vue", ".js"],
},
module:{
rules:[
{
test: /\.vue$/,
loader: 'vue-loader'
}
]
},
plugins: [
new VueLoaderPlugin(),
new BundleTracker({filename: './webpack-stats.json'}) // 追加
],
}
django側のインストール
pip install django-webpack-loader
django側のコード入力
・入力箇所は追加部分
settings.py(一部抜粋)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'webpack_loader', # 追加
'app',
]
# 以下は一番下に追加
WEBPACK_LOADER = {
'DEFAULT': {
'BUNDLE_DIR_NAME': 'dist/',
'STATS_FILE': os.path.join(BASE_DIR, 'frontend', 'webpack-stats.json')
}
}
index.html
{% load render_bundle from webpack_loader %} //追加
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>django</title>
</head>
<body>
<h1>django</h1>
<div id="app"></div> //追加
{% render_bundle 'main' %} //追加
</body>
</html>
結果
django側をwebで開いたとき以下のようになっていれば成功
Discussion