1-2주차 강의 복습 및 정리
1-2주차 복습 및 정리
2주차 숙제
회원가입 중복방지 & 사용자 조회
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('로그인 성공!')##
##숙제 변경##
↓
return HttpResponse(me.username)
else:
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
filter
- POST요청으로 들어온 데이터중에서 password와 password2가 잘 맞게 들어오게 됐을때의 else문에서 조건 추가
exist_user = UserModel.objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html')
else:
이하 동일
- username이 중복인 경우와 아닌경우로 나눠준다
- post로 들어온 username과 데이터베이스에 있는 username과 같은 exist_user를 filter함수로 검색해서 가져온다
- 이하 if문은 exist_user가 존재할때 다시 signip.html을 띄워주고
아닌경우의 else는 새로운 user를 생성한다.
HttpResponse
- 로그인 성공시 띄워주게되는 기존 '로그인 성공!'의 값을 로그인 하게되는 me의 username을 띄워줄 수 있게 me.username으로 변경
참고링크
POST와 post, GET과 get의 차이
- HTTP 프로토콜에서 HTTP 메서드는 대소문자를 구분하기 때문에 대문자를 사용해준다. 따라서 html에서 작성되는 메서드에서는 소문자로 작성하지만 request함수를 사용해서 HTTP에 요청을 보낼때는 대문자를 사용해야한다.