23.4.5 TIL

HS L·2023년 4월 5일
0

내일배움캠프

목록 보기
22/73
post-custom-banner

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에 요청을 보낼때는 대문자를 사용해야한다. 
profile
식이
post-custom-banner

0개의 댓글