๐ | WEB DEV/Django7 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. ์ด์ 1 ๋ค์ ๋ฐ์ํ