๐ป Deep Wide Programming (79) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [โบ๏ธ Django] Django basic #3 #4 ๋ณต์ต ๋ฉ๋ชจ ๐UserAdmin (Django๊ฐ ์ ๊ณตํ๋ ์ด๋๋ฏผ ํจ๋) ํ๋ ๋ผ์ธ ์๋ ๋ฐ์ค = fieldset ๊ธฐ๋ณธ ์ฅ๊ณ ์ด๋๋ฏผ fieldset + ์ถ๊ฐํด์ฃผ๊ณ ์ถ๋ค๋ฉด ํ๋จ์ฒ๋ผ. banana fieldset์ ๋ง๋ค์ด์ฃผ์๋ค. from django.contrib import admin from django.contrib.auth.admin import UserAdmin from . import models # Register your models here. @admin.register(models.User) class CustomUserAdmin(UserAdmin): """ Custom User Admin """ fieldsets = UserAdmin.fieldsets + ( ("Banana", {"fields": (".. [โบ๏ธํด๋ก ์ฝ๋ฉ] django App ๋ง๋ค๊ธฐ ์ค์ต #๋ฉ๋ชจ ๐ ํ์ํ App folder๋ค ์์ฑ ์ดํ, 1. ์ฒซ์งธ, Config ํด๋์ settings.py์ INSTALLED_APPS ์์ ์์ฑํด์ค ํ์ ์ฑ๋ค์ ๋ฃ์ด์ค๋ค. [๊ฐ์ฒด์งํฅ!]ex. users ํด๋์ apps.py์ UsersConfig ํด๋์ค, rooms ํด๋์ apps.py์ UsersConfig ํด๋์ค 2. ๋์งธ, models.py์์ ํด๋น App์ ๋ชจ๋ธ์ ์์ฑํด์ค๋ค.์ผ๋จ ์ฅ๊ณ ์์ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ๊ณ , โ ์ปค์คํ ํด์ฃผ๊ณ ์ถ๋ค๋ฉด, AbstractUser์ ์ํฌํธํด์จ๋ค. 3. ์ ์งธ, admin.py์์ Model์ importํ๊ณ , ํด๋นApp์ด๋๋ฏผ ํด๋์ค๋ฅผ ์์ฑํด ์ด๋๋ฏผ ํ๊ฒฝ์ ์ธํ ํด์ค๋ค. ๐Tip! ๋ชจ๋ App admin.py์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ค์ผํ ๋! => App CoreCore.. [โบ๏ธํด๋ก ์ฝ๋ฉ] django Creating the Apps/ Models django Creating the Apps (๋ฒ๋ธ ์์์)django-admin startapp ์ฑ์ด๋ฆ django-admin startapp rooms๋ฅผ ์ ๋ ฅํ๋๋, rooms๋ผ๋ ํด๋๊ฐ ์์ฑ๋์๋๋ฐ ์์ ์ฌ๋ฌ๊ฐ์ง ์ค๋น๋ฌผ๋ค์ด ์ด๋ฏธ ์ฑ๊ฒจ์ ธ ์๋ค.(์ด๋ ์์ฑ๋ ํ์ผ ๋ช ๋ค์ ์์๋ก ๋ฐ๊พธ๋ฉด ์๋๋ค. library๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋, framework๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ!!โ๏ธframework = ์ ํด์ง ๋ฃฐ๋๋ก ์ฌ์ฉํด์ผ ํ๋ค. โ๏ธlibrary = ๋ญ๊ฐ๋ฅผ ์ง๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ex. react ) ๊ณํํ ์ฅ๊ณ app์ ํ์ํ ํ์ app ํด๋๋ค์ ์์ฑํด์ค๋ค.๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ํด๋์ urls.py ํ์ผ์ ์์ฑํด์ค๋ค. ์ฌ์ฉํ๊ฒ๋ url์ด ๊ต์ฅํ ๋ง์ ๊ฑฐ๊ธฐ ๋๋ฌธ์, configํด๋์ url ํ์ผ์์๊ฐ ์๋๋ผ, .. [โบ๏ธํด๋ก ์ฝ๋ฉ] ์ฅ๊ณ ์๋ฒ ์คํํ๊ธฐ, ์ฅ๊ณ App ๊ธฐํ ์ฅ๊ณ ์๋ฒ ์คํํ๊ธฐ terminal์์ ๋ฒ๋ธ์ด ์๋ ์์ ํด๋์ ๋ค์ด๊ฐ ๋ค, ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค. ๐ฉ๐ป pipenv shell python manage.py runserver ๊ทธ๋ฌ๋ฉด ์ฅ๊ณ ๊ฐ ์ฃผ๋ ๋งํฌ๊ฐ ํ๋ ๋จ๋๋ฐ, ํด๋ฆญํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ์นํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค. http://127.0.0.1:8000/ ์๋ฒ๋ฅผ ๊ตฌ๋์ํจ ๊ฒ์ด๋ค! ์๋ฒ ์ฃผ์์ /admin์ ์ถ๊ฐํด์ ๊ฒ์ํด๋ณด๋ฉด, ์ด๋๋ฏผ ํ์ด์ง๋ ๋ง๋ค์ด์ ธ ์๋๊ฒ์ ํ์ธํ ์ ์๋ค. (๋ก๊ทธ์ธํ๋ผ๊ณ ๋ธ) \ [๋ง์ฝ ์ค๋ฅ๊ฐ ๋ฌ๋ค๋ฉด] ์๋ฒ ๋๋ ๋ฒ: ํฐ๋ฏธ๋> ctrl + z (์ ์๋ฒ ํ์ด์ง ๋ฆฌํ๋ ์ ํ๋ฉด ๊ตฌ๋ ์ํ๋ ๊ฒ์ผ๋ก ํ์ธ ๊ฐ๋ฅ) ์๋ฒ๋ฅผ ๋ ์ํ์์, ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅ python manage.py migrate python manage.py .. [ํด๋ก ์ฝ๋ฉโบ๏ธ] #2 INTRODUCTION TO DJANGO ๐Creating a Django Project ์ด์ด์, ๊ฐ์ ํ์ผ/๊ฐ๋ฐํ๊ฒฝ ๋ด์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅ django-admin startproject config django-admin startproject config . (๋์ .์ ๋ถ์ด๋ฉด ์๋์ ๊ฐ์ ์ ์ฐจ ํ์ง ์์๋ ๋๋๋ฏ.,?) ๊ทธ๋ฌ๋ฉด ์์ ๊ฐ์ ํ์ผ๋ค์ด ์์ฑ๋๋ค. ํด๋๋ช ์ ๋ณ๊ฒฝํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ๋ค์ด์๋ configํด๋์ manage.py๋ฅผ ๋ฐ์ผ๋ก ๊บผ๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ Aconfig ํด๋๋ ์ง์ด๋ค. ํ๋จ์์ ๋ฒ์ ์ด pipenv๊ฐ ํฌํจ๋ ๋ฒ์ ์ธ์ง ํ์ธํ๊ณ ๋ณ๊ฒฝํด์ค๋ค. ๐Setting up VSCode and Python Like a PRO Linting Python in Visual Studio Code Linting Python in Vis.. [โบ๏ธํด๋ก ์ฝ๋ฉ] pipenv, Django ์ค์น, ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ ๐์์ผ๋ก ์ฌ์ฉํ Framework ๐django : Prevent "reinventing the wheel" ๐tailwindcss(utility first css framework) ๐pipenv ์ค์น pipenv : ์ฅ๊ณ ์ค์น ์, pipenv๋ก ์ค์นํ ๊ฒ. pipenv๋ฅผ ์ด์ฉํ๋ฉด, ๋ฒ๋ธ์ installํด์ค๋ค. global๋ก ๋ค์ด๋์ง ์๊ณ , ๋ฒ๋ธ์ ๋ฒ์ ๋ณ๋ก ๋ค์ด๋ก๋ ๊ฐ๋ฅ ๐Mac OS/๋ฆฌ๋ ์ค๋ผ๋ฉด brew install pipenv ๋ฅผ ์ด์ฉํด ๋ค์ด๋ก๋! brew install pipenv ๐จ๐ป brew๊ฐ ๊น๋ ค์์ง ์๋ค๋ฉด, ๋ค์์ ๋ช ๋ น์ด๋ก home brew์ค์น /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/instal.. [SOPT, ์ง์ฅ์ ๊นํฐ๋] Git, Github ์คํฐ๋ 1์ผ์ฐจ ๐์ค๋ ์คํฐ๋์ ๋ชฉ์ : ๊น์์ ํ ์ ์๋ ์์ , ๊นํ๋ธ์์ ํ๋ ์์ ์ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ๐๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS) Git, Github๐CI : ๋ด๊ฐ ์ง๊ธ ํ๋ ์์ ์ด ์ด์ ์์ ์ ์ํฅ์ ๋ผ์น์ง ์๋๋ค๋ ๊ฒ์ ์ง์์ ์ธ ๊ฒ์ฆ (์ ๊ธฐ๋ฅ ์ถ๊ฐ์ ์์ ๊ธฐ๋ฅ์ด ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ณผ์ )๐CD :์ปค๋ฐ๋ง ํ๋ฉด, ์์์ Deployํด์ฃผ๋ ์์ Git, Github์ ์ฐจ์ด์ ๐Git: ๋ค๋ฅธ ์๋ฒ์ ์ฐ๊ฒฐํ์ง ์๊ณ (๋คํธ์ํฌ ์์ด) ๋ก์ปฌ์์ ์ ์ฅ์(์์ค ์ฝ๋๋ค์ ๋ชจ๋ ์ ์ฅํด๋๋ ๊ณณ)๋ฅผ ๋ง๋ค๊ณ , ๋๋๋ฆฌ๊ณ ๋ฑ์ ์์ ํ ์ ์๋ ๊ฒ. ๐Github:(์๊ฒฉ ์ ์ฅ์์ ๊ฐ๋ ) ์๋ก์ด ์์ ์ ์๋ฒ์ push(์ ์ฅ)ํด์ฃผ๋ ๊ฒ_push๋ฅผ ํตํด ์๋ฒ์ ์ ์ฅ์์ ๋๊ธฐํ๋ฅผ ํด์ฃผ๋ ๊ฒ. (commit์ ๋ก์ปฌ์ ์ ์ฅ์์ ์ ์ฅํด์ฃผ๋ ๊ฒ) ๐.. [์ํ์ฝ๋ฉ JS] object inheritance ๊ฐ์ฒด ์์ (์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์๋ฆฌ์ฆ) ๐ํด๋์ค๋ฅผ ํตํ ์์์ด ์๋, ๊ฐ์ฒด๋ฅผ ํตํ ์์์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค. โ๏ธ ์ฃผ๋ฅ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ์ธ์ด์ ๋ฐฉ์ ๊ฐ์ฒด์ ์์ฑ์ ํด๋์ค ๋จ์์ ์ด๋ฏธ ๊ฒฐ์ ์ด ๋๋ค. ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ฑ์ ์์๋ฐ์ ์ ์๋ค. ๊ทธ๋ฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ค๋ฅด๋ค! ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ๋ฅํ๋ค. ๊ฐ์ฒด๊ฐ ์ง์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก๋ถํฐ ์์๋ฐ์ ์ ์๊ณ , ์ผ๋ง๋ ์ง ์์๊ด๊ณ๋ฅผ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ! ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ก๋ถํฐ ์์๋ฐ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด, ๋งํฌ ๊ต์ฒด๋ฅผ ํตํด ๊ฐ๋จํ๊ฒ ์์๊ด๊ณ๋ฅผ ๋ฐ๊ฟ ์ ์๋ค. ์ด ๋งํฌ๋ฅผ 'prototype link'๋ผ๊ณ ํ๋ค. ์ด ๋งํฌ๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ฒด๋ฅผ 'prototype object'๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๐__proto__๋ฅผ ์ด์ฉํด์ ์์๋ฐ์ ์ ์๋ค. or ๐Object.create(); ๋ฅผ ์ด์ฉํด์ ์์๋ฐ์ ์ ์๋ค. ์ด์ 1 2 3 4 5 6 ยทยทยท 10 ๋ค์