๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅWeb/๐Ÿ”ฅDjango9

[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 9 pagination, response data useEffect ๋””ํŽœ๋˜์‹œ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋งตํ•‘ + ๋ Œ๋”๋ง ํ…Œ์ด๋ธ”์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋™์•ˆ์˜ ๋ณด์—ฌ์ค„ ๋กœ๋”ฉ, ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„๋•Œ์™€ ์—†์„๋•Œ ๋‹ค๋ฅด๊ฒŒ ๋ณด์—ฌ์ค„ tbody๋“ฑ์„ ์ถ”๊ฐ€, ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. Home.js import React, { useState, useEffect } from 'react'; import axios from 'axios'; import '../pages_css/Home.css'; import BoardModal from './BoardModal'; import Paging from '../utils/Paging'; const Home = () => { // Modal const [modal_is_open, setModalIsOpen] = useSta.. 2021. 11. 27.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 8 react-modal ์„ค์น˜, ajax ์‘๋‹ต ์„ฑ๊ณต/์‹คํŒจ ํ•ธ๋“ค๋ง, ๋ฐฑ์—”๋“œ ์ƒˆ๋กœ์šด model ์ƒ์„ฑํ•˜์—ฌ insert react์—์„œ ์ธ์„œํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ฌํ™”๋ฉด์„ ์ •์˜ํ•˜๊ณ  ์‘๋‹ต์— ๋”ฐ๋ผ ํ•ธ๋“ค๋ง ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ npm install react-modal์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค. Home.js import React, { useState } from 'react'; import '../pages_css/Home.css'; import BoardModal from './BoardModal'; const Home = () => { const [modal_is_open, setModalIsOpen] = useState(false); return ( Home setModalIsOpen(true)}> NEW ); }.. 2021. 11. 26.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 7 psycopg2 ์„ค์น˜, postgresql DB ์—ฐ๋™, core ์•ฑ ์ƒ์„ฑ, migrations ๊ด€๋ฆฌ, models ์ •์˜, model object์˜ query, ํ„ฐ๋ฏธ๋„์—์„œ http ์š”์ฒญ๋ณด๋‚ด๊ธฐ psycopg2 Psycopg๋Š” Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์šฉ์œผ๋กœ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ด๋Œ‘ํ„ฐ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์€ Phyton DB API2.0 ์‚ฌ์–‘์˜ ์™„์ „ํ•œ ๊ตฌํ˜„๊ณผ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ(์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ์—ฐ๊ฒฐ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Œ)์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งŽ์€ ์ปค์„œ๋ฅผ ์ƒ์„ฑ ๋ฐ ํŒŒ๊ดดํ•˜๊ณ  ๋งŽ์€ ์ˆ˜์˜ ๋™์‹œ "INSERT" ๋˜๋Š” "UPDATE"๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฐ ์„œ๋ฒ„ ์ธก ์ปค์„œ, ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐ ์•Œ๋ฆผ, "COPY TO/COPT FROM" ์ง€์›์ด ํŠน์ง•์ž…๋‹ˆ.. 2021. 11. 25.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 6 PostgresSql Database ์ƒ์„ฑ, Sequence ์ƒ์„ฑ, Table ์ƒ์„ฑ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋Š” DBeaver์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. DBeaver๊ฐ€ ์„ค์น˜์•ˆ๋˜์…”์žˆ๋Š” ๋ถ„๋“ค์€ ์„ค์น˜ํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ธ€๋ง ํ•˜๋ฉด ๊ธˆ๋ฐฉ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋งจ์™ผ์ชฝ ์œ„ ์ƒ๋‹จ์˜ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ํด๋ฆญํ•˜์—ฌ์ค๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค์—์Šคํ์—˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํŒจ์Šค์›Œ๋“œ๋Š” postgres๋กœ ํ•˜์‹œ๋ฉด ๋ ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋ฏธ 1๊ฐœ๊ฐ€ ์ด๋ฏธ ๊ฐ™์€์ด๋ฆ„์œผ๋กœ ์žˆ์–ด์„œ postgres 2๋กœ ์ด๋ฆ„์ด ์ •ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. SQL ํŽธ์ง‘๊ธฐ๋ฅผ ์—ด์–ด์ค๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ปค์„œ๋ฅผ ๋ฌธ์žฅ์œ„์— ์˜ฌ๋ ค์ฃผ๊ณ  ctrl + enterํ•ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œํ€€์Šค ์ƒ์„ฑ, ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ๋•Œ๋ฌธ์— 2๋ฒˆ ์งˆ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CREATE SEQUENCE seq_board START 1; .. 2021. 11. 24.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 5 djangorestframework ์„ค์น˜, REST API ํ˜ธ์ถœ, useState์™€ uesEffect ์‚ฌ์šฉ, CORS ์ดํ•ด, django-cors-headers ์„ค์น˜, ์–‘๋‹จ๊ฐ„์˜ ํ†ต์‹  DjangoRestFramework ์›น API๋ฅผ ๊ตฌ์ค‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ ํˆดํ‚ท OAuth1a ๋ฐ OAuth2์šฉ ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•œ ์ธ์ฆ ์ •์ฑ… ORM ๋ฐ ๋น„ORM ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ์ง๋ ฌํ™” ์šฐ์„  pip install djangorestframework ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๋ฐ›์•„์ค๋‹ˆ๋‹ค. pip freeze ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. python3 manage.py runserver ๋ช…๋ น์–ด ์‹คํ–‰์‹œ python manage.py migrate ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ์šฉ์ด ์•ˆ๋œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ญ๋ชฉ.. 2021. 11. 23.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 4 React-router-dom ์„ค์น˜, root ํƒœ๊ทธ ๋ Œ๋”, Route ์ง€์ •, SPA๊ตฌ์„ฑ, ์‚ฌ์ด๋“œ๋ฐ” ์ œ์ž‘ SPA(Single Page Application) : ์ŠคํŒŒ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์™„์ „ํ•œ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  ํ˜„์žฌ์˜ ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ตํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์›น์‚ฌ์ดํŠธ ๋™์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•จ์œผ๋กœ์จ ์—ฐ์†๋˜๋Š” ํŽ˜์ด์ง€๋“ค ๊ฐ„์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์˜ ๊ฐ„์„ญ์„ ๋ง‰์•„์ฃผ๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์คŒ react-router-dom ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ React Router๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ”์ธ๋”ฉ์ด ํฌํ•จ๋˜์–ด์žˆ์Œ React์— ํ”„๋กœ์ ํŠธ์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์Œ์œผ๋กœ react-router-dom๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ SPA๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. router๊ฐ€ ๋“ค.. 2021. 11. 23.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 3 python venv ์ƒ์„ฑ, pip๋กœ django ์„ค์น˜, venv ํ™œ์„ฑํ™”, Django server ๊ตฌ๋™ Django ํŒŒ์ด์ฌ์œผ๋กœ ์ž‘์„ฑ๋œ ์˜คํ”ˆ ์†Œ์Šค ์›น ํ”„๋ ˆ์ž„์›Œํฌ ๊ณ ๋„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์ˆ˜๊ณ ๋ฅผ ๋”๋Š” ๊ฒƒ์ด ์žฅ๊ณ ์˜ ์ฃผ๋œ ๋ชฉํ‘œ์ด๋‹ค. ์žฅ๊ณ ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ”Œ๋Ÿฌ๊ทธ์ธํ™” ๊ฐ€๋Šฅ์„ฑ, ๋น ๋ฅธ ๊ฐœ๋ฐœ ๋“ฑ์„ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ๋‹ค. ์šฐ์„ ์ ์œผ๋กœ ํŒŒ์ด์ฌ์„ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ์•ˆ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ python.org(pip3 ํˆด๋„ ํ•จ๊ป˜)์—์„œ ํŒŒ์ด์ฌ3๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜๋Š”๊ฒƒ์ด ์ข‹๊ฒ ์ง€๋งŒ anonymous_blog๊ฐ€ ํฌํ•จ๋œ ๊ฐ™์€ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ๋งŒ๋“ค๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. python3 ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. python3 -m venv [๊ฐ€์ƒํ™˜๊ฒฝ ์ด๋ฆ„] ์ƒ์„ฑ๋œ ๊ฐ€์ƒํ™˜๊ฒฝ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋ฉด.. 2021. 11. 23.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 2 Node.js ์„ค์น˜, React Project ์ƒ์„ฑ, Node.js์˜ Runtime์—์„œ React Project ๊ตฌ๋™ Node.js Node.js๋ฅผ ์„ค์น˜ํ•˜๋Š” ์ด์œ ๋Š” Javascript์˜ ๋Ÿฐํƒ€์ž„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž…๋‹ˆ๋‹ค. V8(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„)์œผ๋กœ ๋นŒ๋“œ๋œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„์ด๋‹ค. Node.js๋Š” ๋ฐ˜์‘ํ˜• ์›น React๋ฟ ์•„๋‹ˆ๋ผ Vue, Angular ๋“ฑ ์—์„œ ํ™œ๋ฐœํ•˜๊ฒŒ ์ง„ํ–‰๋œ๋‹ค. V8 ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ๊ตฌ๊ธ€ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์™€ ์•ˆ๋“œ๋กœ์ด๋“œ ๋ธŒ๋ผ์šฐ์ €์— ํƒ‘์žฌ๋˜์–ด ์žˆ๋‹ค. V8์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ์šฐ์„  VSCode์—์„œ ํ„ฐ๋ฏธ๋„์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. VSCode ํ•˜๋‹จ์— ์ฐฝ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์šฐ์ธก์˜ zsh์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.. 2021. 11. 23.
[Django] ์ดˆ๊ธ‰ React + Django ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ 1 ๊ฐ„๋‹จํ•œ ์ต๋ช… ๋ธ”๋กœ๊ทธ์— ๋Œ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์–ธ์–ด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Javascript Runtime Environment : node.js Javascript Package Manager : npm Frontend Framework : React Forntend Language : Javascript Web Application configuration: SPA Backend Framework : Django Backend Language : python Database : PostgreSql Algorithm : SHA256 ํ”„๋กœ์ ํŠธ ๊ธฐ๋Šฅ ์ต๋ช… ๊ธ€/๋Œ“๊ธ€ ์“ฐ๊ธฐ, ์ˆ˜์ •, ์‚ญ์ œ ์กฐํšŒ ๊ตฌ์ถ• Frontend Backend DB ๋ธ”๋กœ๊ทธ ์ˆœ์„œ ๋ฐ ์„ฑ๊ณผ Node.js ์„ค์น˜, React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ, Node.js ๋Ÿฐํƒ€์ž„์—์„œ R.. 2021. 11. 23.
๋ฐ˜์‘ํ˜•