๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ก์›น ํ”„๋กœ์ ํŠธ

(25)
webpack์œผ๋กœ Django - Vue.js ์—ฐ๋™ํ•˜๊ธฐ 1. Django ํ”„๋กœ์ ํŠธ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. $ mkdir semoview $ python -m venv venv $ .\venv\Scripts\activate # ๊ฐ€์ƒํ™˜๊ฒฝ ์ข…๋ฃŒ : deactivate ๊ฐ€์ƒํ™˜๊ฒฝ ์•ˆ์— ์žฅ๊ณ ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. $ pip install django ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ๋ช…์„ django-vue๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. $ django-admin startproject config $ move config django-vue manage.pyํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์•ฑ(api)์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. $ cd django-vue $ python manage.py startapp api settings.pyํŒŒ์ผ์—์„œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. INSTALLED_APPS = [ ..
๋„ค์ด๋ฒ„ ์‡ผํ•‘ ์•„์ดํ…œ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ ์ฐธ๊ณ ํ•œ ์œ ํŠœ๋ธŒ > https://youtu.be/yQ20jZwDjTE 1. ์Šคํฌ๋ž˜ํ•‘์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ BeautifulSoup, Requests ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. pip list ๋ชฉ๋ก์— beautifulsoup4 , requests ํŒจํ‚ค์ง€๊ฐ€ ์—†๋‹ค๋ฉด ์„ค์น˜ํ•ด์ค€๋‹ค. pip install beautifulsoup4 pip install requests + ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•ด์ฃผ๋Š” parser์„ค์น˜ pip install lxml 2. python ํŒŒ์ผ ์ƒ์„ฑ ํŒŒ์‹ฑ์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํŒŒ์ด์ฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. vi parser.py 3. HTML ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ํŒŒ์‹ฑํ•ด์˜ฌ ์›น ์‚ฌ์ดํŠธ์—์„œ ์—ฐ๊ทน ๋ชฉ๋ก ์ค‘ ์—ฐ๊ทน๋ช…์„ ๊ฐ€์ ธ์˜ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค. import requests from bs4 import Beautifu..
Web Scraping์ด๋ž€? ์›น ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„ : [์ˆ˜์ง‘] -> [์ €์žฅ] -> [์ฒ˜๋ฆฌ] -> [๋ถ„์„] -> [์‹œ๊ฐํ™”] (์ด ์ค‘ ์›น ์Šคํฌ๋ž˜ํ•‘์€ [์ˆ˜์ง‘] ๋‹จ๊ณ„์ž„) ์›น ์Šคํฌ๋ž˜ํ•‘์ด๋ž€? ์›น ์Šคํฌ๋ž˜ํ•‘(Web scraping)์€ ํŠน์ • ํŽ˜์ด์ง€์˜ HTML ๋ฌธ์„œ์— ์†Œ์Šค ์ค‘์—์„œ ์›ํ•˜๋Š” ์ •๋ณด๋งŒ ์ถ”์ถœํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์›น ์Šคํฌ๋ž˜ํ•‘์€ ๋„ค์ด๋ฒ„ ์‡ผํ•‘ ์ตœ์ €๊ฐ€ ๊ฒ€์ƒ‰, ์ธ์Šคํƒ€๊ทธ๋žจ ํƒœ๊ทธ ๊ฒ€์ƒ‰ ๋“ฑ ๋งŽ์€ ๊ณณ์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. 1) ์›น ์Šคํฌ๋ž˜ํ•‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋Œ€์ƒ์„ ์ • : ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ด์˜ฌ url๋กœ ์ด๋™ํ•œ๋‹ค. ๋งŒ์•ฝ ๋„ค์ด๋ฒ„ ์‡ผํ•‘์—์„œ ์—ฐ๊ทน์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํŒŒ์‹ฑํ•ด ์˜ค๋ ค๋ฉด https://search.shopping.naver.com/search/all?where=all&frm=NVSCTAB&query=%EC%97%B0%EA%B7%B9 ๋ฐ์ดํ„ฐ ๋กœ๋“œ : API๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด XML, JSON ๋ฐ..
์ œํ’ˆ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๊ฒ€์ƒ‰์ฐฝ์„ ์•„๋ž˜ ๋‘ ๊ณณ์— ๋‘์—ˆ๋‹ค. nav์—์„œ ๊ฒ€์ƒ‰ SearchPage์—์„œ ๊ฒ€์ƒ‰ 1. nav ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ nav์— ์žˆ๋Š” ๊ฒ€์ƒ‰์ฐฝ์— keyword ์ž…๋ ฅ(ํ•„์ˆ˜) ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ ํด๋ฆญ search/keyword๋กœ ์ด๋™ํ•˜๊ณ  ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ 2. SearchPage ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€์— ์žˆ๋Š” ๊ฒ€์ƒ‰์ฐฝ์— keyword ์ž…๋ ฅ(ํ•„์ˆ˜) (๊ฒ€์ƒ‰ ๋ฒ„ํŠผ ํด๋ฆญ ์ „) result ํ™”๋ฉด ์ˆจ๊ธฐ๊ธฐ (๊ฒ€์ƒ‰ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ) search/keyword๋กœ ์ด๋™ํ•˜๊ณ  ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ 2-1) (์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ) SeachPage.vue ๊ฒ€์ƒ‰์กฐ๊ฑด {{keyword}} //nav.vue์—์„œ ๋ผ์šฐํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ณด๋‚ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ฐ›์Œ ๊ฒ€์ƒ‰ //ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์•„์ง ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 2-2) (ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ) SearchResult...
์ฃผ์†Œ ์ž…๋ ฅ ๊ตฌํ˜„(daum ์ฃผ์†Œ api) ๊ณต์‹ API ํ™ˆํŽ˜์ด์ง€> http://postcode.map.daum.net/guide 1. script์— postcode ์ถ”๊ฐ€ index.html์— ์•„๋ž˜์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ 2. ์ฃผ์†Œ ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ ๊ตฌํ˜„ (pages/ShopBasketPage.vue) ์ฃผ์†Œ ์ž…๋ ฅ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ, showApi() ์‹คํ–‰ api์—์„œ ์ฃผ์†Œ ์„ ํƒํ•˜๋ฉด ์ƒ์„ธ ์ฃผ์†Œ ์ž…๋ ฅ ๋ชจ๋‹ฌ ์ฐฝ ๋‚˜ํƒ€๋‚ด๊ธฐ ์ƒ์„ธ ์ฃผ์†Œ ์ž…๋ ฅ ํผ์—์„œ ์ €์žฅ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ, setAddress() ์‹คํ–‰ 2-1) ํ…œํ”Œ๋ฆฟ ์ฝ”๋“œ ๋ฐฐ์†ก์ง€ ์ฃผ์†Œ ๊ฒ€์ƒ‰ {{ addr.addr1 }} ๋ฆฌ์…‹ ์ €์žฅ 2-2) ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ 3. ์ž…๋ ฅํ•œ ์ฃผ์†Œ vuex์— ์ €์žฅ (store/index.js) export const store = new Vuex.Store({ state: { //ordersheet ์Šคํ…Œ์ดํŠธ..
vuex ์ƒํ’ˆ๋ณ„ ๋ฆฌ๋ทฐ ๋ทฐ์–ด 1. ์ƒํ’ˆ๋ณ„ ๋ฆฌ๋ทฐ ๋ทฐ์–ด ๊ตฌํ˜„ 1) ์Šคํ† ์–ด์— reviews state ์ถ”๊ฐ€(store/index.js) state: { products: [ { id: 0, title: "๊ฐ•์•„์ง€ ์‚ฌ๋ฃŒ", }, { id: 1, title: "๊ณ ์–‘์ด ์‚ฌ๋ฃŒ", }, }, // reviews ์Šคํ…Œ์ดํŠธ ์ถ”๊ฐ€ reviews: [ { productId: 0, reviewId : 0, reviewtitle: "๊ฒฌ์™ˆ : ์ข‹์•„์š”!", reviewer: "์กฐ", reviewedate: "21.07.19", }, { productId: 0, reviewId : 1, reviewtitle: "๊ฐœ๊ฐ€ ์‹ซ์–ดํ•ด์š”.", reviewer: "๊น€", reviewedate: "21.07.19", }, { productId: 1, reviewId : 2, re..
vuex ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌํ˜„ ์ฐธ๊ณ ํ•œ ๊ฒŒ์‹œ๋ฌผ > https://xn--xy1bk56a.run/vuex/3-cart/#%EC%95%A1%EC%85%98-%EC%B6%94%EA%B0%80 1. ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ** ์ปดํฌ๋„ŒํŠธ ํด๋” ๊ตฌ์กฐ ** Vuex (store/index.js) ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ ๋ฒ„ํŠผ๊ณผ ๋ฉ”์„œ๋“œ (ProductPage.vue) ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ทฐ (AddedProductList.vue) ** ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ จ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ** '+ ๋ฒ„ํŠผ' ํด๋ฆญ์‹œ '- ๋ฒ„ํŠผ' ํด๋ฆญ์‹œ product์˜ inventory -1 cartItem์˜ quantity +1 cartItem์˜ itemtotalprice + ์ƒํ’ˆ๊ฐ€๊ฒฉ product์˜ inventory +1 cartItem์˜ quantity -1 cartItem์˜ itemtotalprice - ์ƒํ’ˆ๊ฐ€๊ฒฉ ์ด..
vuex ๋ฐ์ดํ„ฐ ์ „๋‹ฌ(์ƒ์œ„->ํ•˜์œ„) ์ฐธ๊ณ ํ•œ ๊ฒŒ์‹œ๋ฌผ > https://xn--xy1bk56a.run/vuex/3-cart/ https://joshua1988.github.io/web-development/vuejs/vuex-start/ 1. vuex ์„ค์น˜, ์„ค์ • 1) vuex ์„ค์น˜ NPM ์„ค์น˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Vuex ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์„ค์น˜ํ•œ๋‹ค. npm install vuex 2) vuex ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ๋ก ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ์œ„์น˜์— store/index.js ํŒŒ์ผ์„ ๋งŒ๋“  ํ›„, Vuex ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Vue ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Vuex๋ฅผ ํ†ตํ•ด Store ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์„ค์ •ํ•œ๋‹ค. // store/index.js import Vue from 'vue' import Vuex from 'vuex' Vue..
vue์— ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์ ์šฉ https://bootstrap-vue.org/ BootstrapVue Quickly integrate Bootstrap v4 components with Vue.js bootstrap-vue.org 1. ํŒจํ‚ค์ง€ ์„ค์น˜ ์ ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” Vue ํ”„๋กœ์ ํŠธ์—์„œ bootstrap-vue ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•œ๋‹ค npm install vue bootstrap-vue bootstrap 2. main.js์— ์ถ”๊ฐ€ Vue์—์„œ bootstrap-vue๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก main.js์— bootstrap-vue๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' import 'bootstrap/dist/css/bootstrap.min.css' import 'boot..
vue ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์ตœ์†Œ ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ Node.js 4.x ์ด์ƒ(6.x ์ถ”์ฒœ)๊ณผ Git์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ > Vue ์‹œ์ž‘ํ•˜๊ธฐ (+๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •) 1. vue-cli ์„ค์น˜ // vue-cli ์ „์—ญ ์„ค์น˜, ๊ถŒํ•œ์—๋Ÿฌ์‹œ sudo ์ถ”๊ฐ€ npm i -g @vue/cli vue --version Vue CLI๋ฅผ ์„ค์น˜ ํ›„ ๋ฒ„์ „์„ ํ™•์ธํ•ด ๋ณด๋ฉด 3.x์ด ์„ค์น˜๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋‚˜ ๋” ์„ค์น˜ํ•˜์ž. npm i -g @vue/cli-init 2. vue ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ @vue/cli-init์€ 2.x Template์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ vue init๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. // vue init vue init webpack kurly-clone ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ ์„œ๋ฒ„ ์‹คํ–‰ํ•ด์ค€๋‹ค. cd kurly-clone //ํ”„๋กœ์ ํŠธ ํด..