AI 본 교육/AI 4주차
TIL 16일차 - 장고 Admin과 로그인, 회원가입 페이지
호기호
2023. 8. 31. 14:59
관리 페이지를 만들기위해서는 Django에서 제공하는 super user를 만들어야 admin(관리) 페이지에 접근 할 수 있음 !!!!!
터미널창에서 python manage.py createsuperuser 라고 타이핑해주면, 관리자 아이디를 만드는 과정이 나옴.
Username (leave blank to use 'home'):
Email address:
Password:
Password (again):
터미널에서 위에 정보를 입력하면, Admin계정(관리자 게정) 아이디가 생성됨.
GET과 POST를 이용해서 회원가입 / 로그인 페이지를 만들어 봤다.
GET은 대부분 '값을 읽어 올 때' 사용하고, POST는 값을 주고나 수정, 삭제를 요청 할 때 사용한다.
html의 form 태그에 method와 action을 추가한다. form태그의 method로 action에 데이터를 보내주는 역할을 한다. (중요)
{% csrf_token %} 은, Django에서 post 할 때에 보안을 위해서 사용 해 줘야 함.
앞으로 post 메서드를 만들 때 (보안이 중요할 때) 무조건적으로 쓰일 것 같음.
(아래는 templates > user . signup.html 또는 signin.html 중에서 form 부분)
<form class="form-area" method="post" action="/sign-up/">
{% csrf_token %}
html에서 넘겨준 데이터를 views.py에서 받아주고, 내용을 채운다!
(아래는 views.py)
from django.shortcuts import render, redirect
from .models import UserModel
from django.http import HttpResponse
# Create your views here.
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 = UserModel.objects.filter(username=username)
if exist_user:
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(f'{me.username}님 로그인 성공')
else:
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
중간에
exist_user = UserModel.objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html')
이 부분을 통해서 이미 아이디가 데이터베이스에 있을 경우에는 다시 signup 페이지로 돌아가도록 설정함.