웹 패키지+vue와django의 협업 노트

웹팩+vue와django의 연합을 자신의 비망록으로 정리했습니다.

전제 조건


·django와 vue는 각각 웹 화면에 표시
vue 부분은 제가 제작한'웹 응용 개발 환경 구축'을 참조합니다.
https://zenn.dev/hibimosaku/articles/63d5926a3fe90d
・참조 URL
https://github.com/django-webpack/django-webpack-loader

절차.


front 측 설치

npm install [email protected]

front 측 코드 입력


・입력 위치는 추가 섹션
・"publicPath"정보
원래 output의 path와 웹이 열릴 때의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 측이 웹에서 열릴 때 다음과 같은 내용이 되면 성공

좋은 웹페이지 즐겨찾기