2์ฃผ์ฐจ ๋ฐฐ์ธ ๊ฒ
ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
URL Conf = urls.py (ํ์ด์ฌ ๋ด ์์ ๊ณต๊ฐ) : ์ฌ์ฉ์๊ฐ ์ด๋ค ์ฃผ์๋ก ์ ๊ทผํ ์ ์๊ฒ ์ ํด์ฃผ๋ ๊ณต๊ฐ
view = views.py (ํ์ด์ฌ ๋ด ์์ ๊ณต๊ฐ) : URL์์ ์ด๋ค ์ญํ ๊ณผ ์ํ์ ํ ๊ฒ์ธ์ง ๋ง๋ค์ด์ฃผ๋ ๊ณต๊ฐ
SNS ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
ํฐ๋ฏธ๋์์ ํด๋น ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ ์ฑ ์์ฑ
django-admin startapp user
django-admin startapp tweet
settings.py = ์ฅ๊ณ ํ๋ก์ ํธ๊ฐ ์ด๋ค ๊ธฐ๋ฅ๊ณผ ์ญํ ์ ํ๋์ง ์ธํ ํ๋ ๊ณณ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ Django ORM
class myBakery:
bread_type = '' # ๋นต์ ์ข
๋ฅ
bake_time = '' # ๊ตฝ๋ ์๊ฐ
price = 0 # ๊ฐ๊ฒฉ
์์ ๊ฐ์ ํด๋์ค์ ํํ๋ฅผ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ฉํ๋ ๊ฒ์ ORM์ด๋ผ๊ณ ํจ
๋ชจ๋ธ ๋ง๋ค๊ธฐ
- ์์ฑํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ
- ์ด๋ค ๋ชจ๋ธ์ ์์ฑํ ๊ฒ์ธ๊ฐ?
- ์ด๋ค ์์๋ค์ ๋ด์ ๊ฒ์ธ๊ฐ?
์์ ๋ชจ๋ธ Class ์์
Class Meta ๋ ์ด DBํ
์ด๋ธ์ ์ด๋ฆ์ ์ง์ ํด์ฃผ๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์
Django ๋ชจ๋ธ ํ๋ ์ข ๋ฅ
๋ง๋ ๋ชจ๋ธ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฃ๊ธฐ
<ํฐ๋ฏธ๋์ ์ ๋ ฅ>
a. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ์ ์๋ ค์ฃผ๋ ๋ช ๋ น์ด
python manage.py makemigrations
b. ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ฐ์ ํด ์ฃผ๋ ๋ช ๋ น์ด
python manage.py migrate
Django Admin ๊ธฐ๋ฅ ์ฒดํํ๊ธฐ
django super user ์์ฑ ๋ช ๋ น์ด
python manage.py createsuperuser
admin ๋ชจ๋ธ ๋ฑ๋กํ๊ธฐ
user/admin.py ์ ๋ชจ๋ธ ๋ฑ๋ก
from django.contrib import admin
#์ฅ๊ณ ์์ ์ด๋๋ฏผ ํด์ ์ฌ์ฉ ํ๊ฒ ๋ค
from .models import UserModel
#์ฐ๋ฆฌ์ ์์น์ ๋์ผํ๊ฒ ์๋ models ๋ผ๋ ํ์ด์ฌ ํ์ผ์ ๋ถ๋ฌ์ค๊ฒ ๋ค
# Register your models here.
admin.site.register(UserModel)
# ๋ฐฉ๊ธ ๊ฐ์ ธ์จ UserModel์ Admin์ ์ถ๊ฐํด ์ฃผ๊ฒ ๋ค
ForeignKey ๋?
๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ด์ฉ์ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ๊ฒ
๋ชจ๋ธ ์์ฑ -> (์๋ฒ๊ฐ ๊บผ์ง ์ํ์์) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ์ -> admin์ ๋ชจ๋ธ ๋ฑ๋ก
์ฅ๊ณ ํ ํ๋ฆฟ ๋ฌธ๋ฒ {%
์์)
base.html ์ {% %}๋ก ๊ฐ์ธ์ค ์ค๋ณตํ์ฌ html์ ์์ฑํ์ง ์์๋ ๋๋๋ก ํจ
url - view - templates ์ด์ด์ฃผ๊ธฐ
django MTV๋ฅผ ์๊ฐํ๋ฉฐ ์ดํ ์งํ ์ฌํญ์ ์๊ฐ
์ดํ ์งํํด์ผ ํ ๋์ํ
{% csrf_token %}
์ฅ๊ณ ์์ ๋ฐ์ดํฐ๋ฅผ post๋ก ๋ณด๋ผ ๋ ๋ณด์์ ์ง์ผ์ฃผ๋ ๊ธฐ๋ฅ
๋ก๊ทธ์์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ
def sign_up_view(request):
if request.method == 'GET':
return render(request, 'user/signup.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if password != password2:
return render(request, 'user/signup.html')
else:
new_user = UserModel()
new_user.username = username
new_user.password = password
new_user.bio = bio
new_user.save()
return redirect('/sign-in')
๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
me = UserModel.objects.get(username=username)
if me.password == password:
request.session['user'] = me.username
return HttpResponse("๋ก๊ทธ์ธ ์ฑ๊ณต")
else:
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
ํ์๊ฐ์ ์ค๋ณต ๋ฐฉ์ง
exist_user = UserModel.object.filter(username=username)
if exist_user:
return render(request, 'user/signup.html')
object.filter / object.get ์ฐจ์ด
object.filter ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ ์์ผ๋
์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์์
์์ผ๋ฉด ๊ฐ์ง๊ณ ์ค๊ณ , ์์ผ๋ฉด ์์์ผ๋ก ํ์
object.get ์ ๋ฐ์ดํฐ๊ฐ ๋ฌด์กฐ๊ฑด ์์ด์ผํจ
๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํด
ํ์ธ๋~ ์ค์ํ ์ฝ๋๋ ์ ๋ฆฌํ๋ฉด์ ๊ณต๋ถํ๊ณ ๊ณ์ ์ ์ด ์ ๋ง ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! ์์ผ๋ก์ ์ฅ๊ณ ๊ณต๋ถ๋ ํ์ดํ ์ ๋๋ค!