def signin(request): if request.method=='GET': f=SigninForm() return render(request,'cl/signin.html',{'form':f}) elif request.method=='POST': #회원조회 하는 함수를 사용해 아이디화 비민ㄹ번호가 동일한 회원이 있는지 확인 #is_valid를 사용해 유효성 검사를 할 경우, 아이디 중복에 걸려 항상 False가 뜸 #따라서 오류가 발생했을때만 입력을 전달바하기 위한 폼객체생성 f=SigninForm(request.POST) #POST변수에서 직접 데이터 꺼내기(아이디,비밀번호) id=request.POST.get('username') pw=request.POST.get('password') #아이디랑 비밀번호가 일치하는 User모델클래스 객체 추출 #authenticate(username,password): 비밀번호를 암호화하고 아이디와 암호화된 비밀번호가 일치하는 User객체 추출 #단, 아이디나 비밀번호가 틀린경우 None값을 반환함 u=authenticate(username=id,password=pw) #회원정보가 u변수에 들어있는경우 if u: #로그인 처리 #login(request,u): 해당 뷰를 요청한 클라이언트가 u에 저장된 User 객체정보를 저장하는 함수 login(request,u) #nexturl: 이동할 URL주소를 저장하는 변수 nexturl=request.POST.get('nexturl') if nexturl: return HttpResponseRedirect(nexturl) else: return HttpResponseRedirect(reverse('vote:index')) #회원정보가 u변수에 없는경우(None값이 있는경우) else: return render(request,'cl/signin.html',{'form':f,'error':'아이디 또는 비밀번호가 틀렸습니다'})
def signin(request): #GET방식 요청 if request.method == "GET": #SigninForm 객체 생성 및 HTML파일 전달 form = SigninForm() return render(request, 'cl/signin.html', {'form':form}) #POST방식 요청 elif request.method =="POST": #사용자 입력에서 id와 password부분을 추출 id = request.POST.get('username') pw = request.POST.get('password') #유저 객체 추출(authenticate 함수 사용) #authenticate(username,password) : 비밀번호는 암호화 된 상태로 #username과 비밀번호가 일치하는 User 객체 한 개를 추출하는 함수 #만약, username이나 비밀번호가 틀린경우, None값을 반환함 u = authenticate(username=id,password=pw) #유저가 데이터베이스에 있는지 확인 if u: #로그인처리 #login(클라이언트, User객체) : 해당 요청을 한 클라이언트가 User객체 #정보로 로그인 됨. 로그인 된 클라이언트는 request.user변수를 사용해 #로그인된 회원의 정보(first_name, username...)를 가져올 수 있음. #ex)로그인된 클라이언트의 이름정보를 추출 : request.user.first_name #비로그인상태의 클라이언트는 request.user에 None값이 저장되어 있음 login(request,u) return HttpResponseRedirect('/vote/') #유저가 존재하지 않는경우 else: #로그인페이지를 에러코드와 함께 전달 form = SigninForm() return render(request,'cl/signin.html',{'form':form, 'error':'아이디나 비밀번호가 맞지않습니다.'})
def signin(request): if request.method == 'GET': f = SigninForm() return render(request, 'cl/signin.html', {'form': f}) elif request.method == 'POST': #회원조회하는 함수를 사용해 아이디와 비밀번호가 같은 회원이 있는지 확인 #아이디 중복에 걸려 항상 False가 뜸 #따라서 오류가 발생했을 때 입력을 전달하기 위한 폼 객체 생성 f = SigninForm(request.POST) #POST변수에서 직접 데이터 꺼내기(아이디, 비밀번호) id = request.POST.get('username') pw = request.POST.get('password') #아이디랑 비밀번호가 일치하는 User모델 클래스 객체 추출 #아이디와 암호화된 비밀번호가 일치하는 User객체 추출 #단 아이디나 비밀번호가 틀리면 None값을 반환함 u = authenticate(username=id, password=pw) #회원정보가 u변수에 들어있을시 if u: #로그인 처리 #login(request, u):해당 뷰를 요청한 클라이언트가 u에 저장된 User 객체정보를 저장하는 함수 login(request, u) #nexturl: 이동할 URL주소를 저장하는 변수 nexturl = request.POST.get('nexturl') if nexturl: return HttpResponseRedirect(nexturl) else: return HttpResponseRedirect(reverse('vote:index')) #회원정보가 u변수에 없을시 else: return render(request, 'cl/sign.html', { 'form': f, 'error': '아이디나 비밀번호가 틀림.' })
def signin(request): if request.method == 'GET': return render(request, 'cl/signin.html', {'result': SigninForm().as_table()}) if request.method == 'POST': #사용자가 아이디나 비밀번호 틀렸을 때 전달할 form객체 form = SigninForm(request.POST) #아이디와 비밀번호 추출 id = request.POST.get('username') pw = request.POST.get('password') #DB의 User 객체들 중 아이디와 암호화된 비밀번호가 같은 객체 추출 #Django 함수 authenticate 사용 user = authenticate(username=id, password=pw) print('DB에서 찾은 User객체 :', user) #추출한 User객체로 웹 클라이언트를 로그인 처리 if user: #DB에서 User객체를 찾았는지 확인 #Django 함수 login 사용 #login(request, 추출한 User객체) #로그인처리가 된 웹 클라이언트는 request.user를 사용할 수 있음 login(request, user) #요청한 웹 클라언트가 로그인이 되어 있는지 확인하는 함수 #request.user.is_authenticated() return HttpResponseRedirect(reverse('main'))
def signin(request): if request.method == "GET": return render(request, "cl/signin.html", {'result': SigninForm().as_table()}) #이번엔 한줄로 표현(이것이 최종 표현, 더이상 줄일 수 없다?) - 앞에서는 result에 할당하고 그것을 사용 elif request.method == "POST": #is_valid는 회원가입시에 썼으니, 회원가입이 되어 있다면 is_valid는 False가 뜬다. #로그인 실패시 폼이 필요하다. (아이디나 비밀번호가 틀렸을때 전달할 form객체) form = SigninForm(request.POST) #아이디와 비밀번호 추출 id = request.POST.get('username') #request.POST는 딕셔너리 형태 이므로 pw = request.POST.get('password') #데이터베이스에 User객체들 중 아이디와 암호화된 비밀번호가 같은 객체 추출 user = authenticate(username=id, password=pw) #자동완성- 더블클릭을 통해 import처리 필요 print('데이터베이스에서 찾은 User 객체 :', user) #찾지 못하면 None을 갖는다. #웹 클라이언트를 추출한 User 객체로 로그인 처리 #유저를 찾았으면 로그인 처리 if user: #객체가 있다 True / None 값이면 False #login(request, 추출한 user객체) #로그인처리가 된 웹클라이언트는 request.user를 사용할 수 있음 # request.user.is_authenticated() : 해당 웹클라이언트가 로그인했으면 True, 안했으면 False # 함수 앞이 is_로 시작하면 True or False값으로 반환 login(request, user) #1번째 클라이언트에 대한 요청 2번째 어떤 유저정보로 로그인을 시킬거니? return HttpResponseRedirect(reverse('main'))
def signin(request): if request.method == "GET": return render(request, "cl/signin.html", {'result': SigninForm().as_table()}) elif request.method == "POST": #사용자가 아이디나 비밀번호가 틀렸을 때 전달할 form객체 form = SigninForm(request.POST) #아이디와 비밀번호 추출 id = request.POST.get('username') pw = request.POST.get('password') #데이터베이스에 User 객체들 중 아이디와 암호화된 비밀번호가 같은 객체 추출 user = authenticate(username=id, password=pw) print('데이터베이스에서 찾은 User 객체 :', user) #웹클라이언트를 추출한 User객체로 로그인처리 if user: #데이터베이스에서 유저객체를 찾았는지 확인 #login(request, 추출한 User객체) #로그인처리가 된 웹클라이언트는 request.user를 사용할 수 있음 #request.user.is_authenticated() : 해당 웹클라이언트가 로그인 여부를 확인하는 함수 login(request, user) return HttpResponseRedirect(reverse('main'))