3์ฃผ์ฐจ ๋ฐฐ์ธ ๋ด์ฉ
a. Django์์ ์ ๊ณตํ๋ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ฌ์ฉ
b. Django์์ ์ ๊ณตํ๋ ์ฌ์ฉ์ ๋ชจ๋ธ ํ์ฅ
c. ํฌ์คํธ ์ฝ๊ธฐ/์ฐ๊ธฐ/์ญ์ ํ๊ธฐ
Django์ ์ฌ์ฉ์ ๋ชจ๋ธ ๋น๊ตํ๊ธฐ (๋ด๊ฐ ๋ง๋ ๊ฒ vs ์ฅ๊ณ )
Django์์ ์ ๊ณตํ๋ auth_user๊ฐ
๋ด๊ฐ ๋ง๋ my_user๋ณด๋ค ํจ์ฌ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณต
์ด๋ ๊ฒ ๊ฐํธํ ์ด์ฉํ ์ ์๋ค๋ ์งฑ์งฑ๋งจ...!
User๋ชจ๋ธ ์ ๊ทธ๋ ์ด๋ ํ๊ธฐ
class A:
def ๊ธฐ๋ฅ_A_1:
return '๊ธฐ๋ฅ_A_1'
def ๊ธฐ๋ฅ_A_2:
return '๊ธฐ๋ฅ_A_2'
class B(A):
def ๊ธฐ๋ฅ_B_1:
return '๊ธฐ๋ฅ_B_1'
์์๊ฐ์ด Class B(A)๋ฅผ ์ฌ์ฉํ๋ฉด
ํด๋์คA์์ ์ ์ธํ ๊ธฐ๋ฅ๋ค์ ์ด์ฉํ ์ ์๋
์์ ์ํ๊ฐ ๋จ
AbstractUser ์ฅ๊ณ ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ ์ ๋ชจ๋ธ
ํด๋์ค์ UserModel์ (AbstractUser) ์์
๊ธฐ๋ณธ ์ ์ ๋ชจ๋ธ์ ์ถ๊ฐ๋ก ์ฌ์ฉ์ ๋ชจ๋ธ์ ์ถ๊ฐ ํ ๋
settings.py ์์ ๋ชจ๋ธ ๋ณ๊ฒฝ์ ์ ์ธ ํด์ค์ผํจ
ex) AUTH_USER_MODEL = 'user.UserModel'
User ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ์ํค๊ธฐ
python manage.py makemigrations ->์ฅ๊ณ ์ ์์ ์๋ฆฌ๊ธฐ
python manage.py migrate -> ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ
Django ์ฌ์ฉ์ ๋ชจ๋ธ ์ ์ฉํ๊ธฐ
# user/views.py
from django.contrib.auth import get_user_model #์ฌ์ฉ์๊ฐ ์๋์ง ๊ฒ์ฌํ๋ ํจ์
# user/views.py
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:
exist_user = get_user_model().objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html') # ์ฌ์ฉ์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๋ฅผ ์ ์ฅํ์ง ์๊ณ ํ์๊ฐ์
ํ์ด์ง๋ฅผ ๋ค์ ๋์
else:
UserModel.objects.create_user(username=username, password=password, bio=bio)
return redirect('/sign-in') # ํ์๊ฐ์
์ด ์๋ฃ๋์์ผ๋ฏ๋ก ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋
๋ก๊ทธ์ธ ์์ ํ๊ธฐ
# user/views.py
from django.contrib import auth # ์ฌ์ฉ์ auth ๊ธฐ๋ฅ
auth.authenticate
์ํธํ๋ ๋น๋ฐ๋ฒํธ์ ํ์ฌ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์น ํ๋์ง, ์ฌ์ฉ์์ ๋ง๋์ง๊น์ง ํ๋ฒ์ ํ์ธํ๋ ํจ์
is not None : ๋น์ด์์ง ์๋ค๋ฉด~
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
me = auth.authenticate(request, username=username, password=password)
if me is not None:
auth.login(request, me)
return HttpResponse(me.username)
else:
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
{{}} ์ {% %} ์ ๋ญ๊ฐ ๋ค๋ฅธ๊ฐ?
{{ }} ์ ๊ฐ์ ๊ตฌ๋ฌธ์ ๋จ์ ๋ณ์ ์ถ๋ ฅ์ ์ํด์ ์ฐ๋ ํ๊ทธ์ด๊ณ ,
{% %} ์ ๊ฐ์ ๊ตฌ๋ฌธ์ if, for ๋ฑ ์์์ ๋ก์ง์ ์คํํ๊ธฐ ์ํด ์ฐ์ด๋ ํ๊ทธ์
๋๋ค.
render ์ redirect์ ์ฐจ์ด
render๋ ํ
ํ๋ฆฟ์ ๋ถ๋ฌ์ค๊ณ
redirect๋ URL๋ก ์ด๋ํจ
URL๋ก ์ด๋ํ๋ค๋ ๊ฒ์ ๊ทธ URL์ ํด๋นํ๋ views๊ฐ ์คํ๋๋๊ฒ
order_by
๊ฒ์๊ธ์ด ์์ฑ ๋ ์๊ฐ์ ์ญ์์ผ๋ก ์ถ๋ ฅํ๊ฒ ํด์ค (๊ฒ์ ์์ผ๋ก๊ฐ ์๋ ์ต์ ์์ผ๋ก)
all_tweet = TweetModel.objects.all().order_by('-created_at')
-์จ์ผ ์ญ์์ ๋ ฌ๋จ