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

์žฅ๊ณ 7

Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (7)_login, logout ๋กœ๊ทธ์ธ/์•„์›ƒ ๊ตฌํ˜„ 1. urls.py ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ข…์†๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์˜ urls.py์— ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•œ๋‹ค. from django.contrib import admin from django.urls import include, path from django.contrib.auth import views urlpatterns = [ path(r'^admin/', admin.site.urls), path(r'^accounts/login/$', views.LoginView.as_view(template_name="registration/login.html"), name='login'), path(r'^accounts/logout/$', views.LogoutView.as_view(template_n.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (6)_CRUD CRUD (Create Read Update Delete) ์ƒ์„ฑ, ์ฝ๊ธฐ, ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž Form CRUD๋ฅผ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ํƒœ๊ทธ์ด๋‹ค. ์ด ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์–‘์‹์„ ๋งŒ๋“ค์–ด ๋‚ด๊ธฐ๋„ ํ•˜๊ณ , ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค. 1. forms.py ์ƒ์„ฑ - ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์— ํ•ด๋‹น ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. - form ๋ชจ๋ธ์„ ์žฅ๊ณ ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ค๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ๊ฐ€์ ธ์™€์•ผํ•œ๋‹ค. ์˜ˆ์‹œ from django import forms from .models import Post class PostForm(forms.ModelForm): class Meta: model = Post fields = ('title', 'text',) -.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (5)_ํŽ˜์ด์ง€ ์ด๋™, ์ƒ์„ธ ํŽ˜์ด์ง€ ํŽ˜์ด์ง€ ์ด๋™ ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ request๋ฅผ ๋ฐ›๊ณ  ์ ์ ˆํ•œ url์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค. urls.py) - urlํŒจํ„ด์— path๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. path('url๊ฒฝ๋กœ', views.ํ•จ์ˆ˜๋ช…, name='ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ์— ์“ฐ์ผ ์ด๋ฆ„') ์˜ˆ์‹œ path('post_list', views.post_list, name='post_list'), 'main๋ฃจํŠธ/post_lis't๊ฐ€ url ๊ฒฝ๋กœ๊ฐ€ ๋œ๋‹ค. views.py) request ๋“ฑ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ ๋ฐ›์€ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ render, redirect ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ, ๋ฐ˜ํ™˜ํ•œ๋‹ค. template) ํ…œํ”Œ๋ฆฟ์—์„œ๋Š” ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ํ˜ธ์ถœํ•œ๋‹ค. ๋‚ด์šฉ์€ urls.py์˜ name์— ์ •์˜๋œ ์ด๋ฆ„์„ ์ด์šฉํ•œ๋‹ค. ... ์ƒ์„ธ ํŽ˜์ด์ง€ pk(Primary Key) DB์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (4)_ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• Django ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• template์—์„œ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž HTMLํŒŒ์ผ์€ ์ •์  ํŒŒ์ผ์ด๋‹ค. ๊ทธ์— ๋ฐ˜ํ•ด ํŒŒ์ด์ฌ์€ ๋™์ ์ด๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์€ ํŒŒ์ด์ฌ์„ HTML๋กœ ๋ณ€ํ™˜์‹œ์ผœ, ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋™์ ์ธ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋™์  ๋ฐ์ดํ„ฐ ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜ ์ฟผ๋ฆฌ์…‹์„ ์ด์šฉํ•˜์—ฌ views.py์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•œ๋‹ค. ex) from django.shortcuts import render from django.utils import timezone from .models import Post def post_list(request): posts = Post.objects.filter(published_date__lte=timezone.now()).ord.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (3)_QuerySet Django QuerySet(์ฟผ๋ฆฌ์…‹) DB์˜ ๊ฐ์ฒด๋“ค์„ ํ…œํ”Œ๋ฆฟ์—์„œ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ด์šฉํ•˜๋Š” '๊ฐ์ฒด์˜ ์ง‘ํ•ฉ'์ด๋‹ค. ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•˜์—ฌ ํ•„ํ„ฐ๋ง์„ ํ•˜๊ฑฐ๋‚˜ ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. DB(SQL)์—์„œ๋Š” row์— ํ•ด๋‹นํ•˜๊ณ , ํŒŒ์ด์ฌ ์ฝ”๋“œ๊ฐ€ SQL๋กœ ๋งคํ•‘๋˜์–ด QuerySet์ด๋ผ๋Š” ์ž๋ฃŒ ํ˜•ํƒœ๋กœ ๊ฐ’์ด ๋„˜์–ด์˜จ๋‹ค. ์žฅ๊ณ  Shell ์žฅ๊ณ  ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ฝ˜์†”(interactive console)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ์…‹์— ๋Œ€ํ•œ ๊ฐ’์„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์ฝ˜์†”์—์„œ๋Š” ์žฅ๊ณ ์˜ ๋ช…๋ น์–ด์™€ ํŒŒ์ด์ฌ์˜ ๋ช…๋ น์–ด ๋“ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. python manage.py shell ๋จผ์ € models.py์—์„œ ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜จ๋‹ค. from blog.models import Post 1. ๋ชจ๋“  ๊ฐ์ฒด ๋ฐ˜ํ™˜ Post.objects.all() 2. ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ ํ•„์š”์— ๋”ฐ.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (2)_MVT ์ƒ์„ฑ Django Model(๋ชจ๋ธ) ๋ชจ๋ธ์€ ๊ฐ์ฒด์˜ ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์ด๊ณ , ์ด๋ฅผ ์ €์žฅํ•˜๋ฉด ๊ทธ ๋‚ด์šฉ์ด DB์— ์ €์žฅ๋œ๋‹ค. ์žฅ๊ณ ๋Š” App์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•  ์ˆ˜์žˆ๋‹ค. ์ฆ‰, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ python manage.py startapp blog(app๋ช…) django(ํ”„๋กœ์ ํŠธ ์œ„์น˜) โ”œโ”€โ”€ mysite | __init__.py | settings.py | urls.py | wsgi.py โ”œโ”€โ”€ manage.py โ””โ”€โ”€ blog(App ๋””๋ ‰ํ† ๋ฆฌ) โ”œโ”€โ”€ migrations | __init__.py โ”œโ”€โ”€ __init__.py โ”œโ”€โ”€ admin.py โ”œโ”€โ”€ models.py โ”œโ”€โ”€ tests.py โ””โ”€โ”€ views.py ์œ„์™€ ๊ฐ™์€ ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ์ด ๋  ๊ฒƒ์ด๋‹ค. ์ƒ์„ฑํ•œ App์— ๋Œ€ํ•˜์—ฌ ๊ผญ ํ•ด.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (1)_๊ธฐ์ดˆ ๋“ค์–ด๊ฐ€๋ฉฐ EAGU ๋™์•„๋ฆฌ ํ™œ๋™ ๊ทธ ์ฒซ ๋ฒˆ์งธ๋กœ '๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ'๋ฅผ ํ•ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Django๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ํšŒ์žฅ๋‹˜์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฉค๋ฒ„๋“ค์€ ๋ชจ๋‘ ์ฒ˜์Œ์ด๋ผ์„œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ํ˜„์žฌ ์žฅ๊ณ ์™€์˜ ์ฒซ ๋งŒ๋‚จ์„ ๊ฐ€์ง€๊ณ  4์ผ์ฐจ! ์ด๋ฒˆ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ๊ณต๋ถ€ํ–ˆ๋˜ ์žฅ๊ณ ์˜ ๊ธฐ์ดˆ์™€ ์—ด์‹ฌํžˆ ๊นจ์ง€๊ณ  ๋ถ€์„œ์ง€๋ฉฐ ์–ป์€ ๊ฒƒ๋“ค์„ ์ ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค! Django๋ž€ ๋ฌด์—‡์ธ๊ฐ€ Django(์žฅ๊ณ )๋Š” ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์ด์ „์— Flask๋ฅผ ํ•œ ๋ฒˆ ์ฐ๋จนํ•ด๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์–‘๋Œ€์‚ฐ๋งฅ๊ณผ ๊ฐ™์€ ๋Š๋‚Œ์˜ ํฌ์ง€์…˜์ด๋‹ค. ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Framework์ด๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์˜ request์— ๋Œ€ํ•œ ๋‹ต์žฅ๊ณผ ๊ทธ๊ฒƒ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Django์˜ MVTํŒจํ„ด (Model View Template) ์žฅ๊ณ ๋Š” 3๊ฐ€์ง€.. 2022. 6. 30.
๋ฐ˜์‘ํ˜•