ProjectFFF / FFF

Find Fine Fit (First Django Project)
BSD 2-Clause "Simplified" License
5 stars 0 forks source link

계정 생성은 가능한데 로그인 기능 에러 #27

Open baaaam771 opened 3 years ago

baaaam771 commented 3 years ago

계정 생성은 가능한데 로그인 기능 에러

Originally posted by @baaaam771 in https://github.com/ProjectFFF/FFF/issues/13#issuecomment-697816901

baaaam771 commented 3 years ago
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import auth

def signup(request):
    if request.method == 'POST':
        if request.POST['password1'] == request.POST['password2']:
            user=User.objects.create_user(username=request.POST['id'], password=request.POST['password1'])
            auth.login(request, user)
            return redirect('home')
    return render(request, 'signup.html')

def login(request):
    if request.method == 'POST':
        username = request.POST['id']
        password = request.POST['password']
        user = auth.authenticate(request, username=username, password=password)
        if user is not None:
            auth.login(request, user)
            return redirect('home')
        else:
            return render(request, 'login.html', {'error': 'username or password is incorrect.'})
    else:
         return render(request, 'login.html')

def logout(request):
    if request.method == 'POST':
        auth.logout(request)
        return redirect('home')
    return render(request, 'login.html')
baaaam771 commented 3 years ago

진짜 이 문제가지고 엄청 오래 끌었다. 별 방법을 다 찾아봤는데 방법이 안나왔다. 계속 value 값이 입력되지 않는 것으로 나왔다. 당연히 함수 문제인 줄 알고 POST GET도 따져보고, 함수 로직도 따져보고, render 값 바꿔보며 테스트해도 문제가 없었다. 그래서 멀정한 함수를 두 가지로 나눴다. 접속용 e_login 함수와 login 함수로 나눠서 접속용과 로그인 확인용으로 진행했는데 그래도 안되서 뭔가 이상하다고 생각했다 그래서 전에 블로그 프로젝트에서 만든 로그인 html을 테스트해보니 잘만 작동했다. 함수를 비교해도 전혀 차이가 없어서 그레서 프론트에 뭐가를 잘못했디는 것을 알았다. MultiValueDictKeyError가 나왔기 때문에 input의 하나하나 속성들 다 지워가면서 동작 시켜보고 했다. 먼저 버튼 작동이 안 됐다. 보니까 버튼의 태그 형태가 다르게 되어있었다. 그래서 a태그로 설정 되어있던 버튼을 input 형태로 바꿔주고 블로그 화면에 적용시켜보니 잘 작동했다. 그래서 아 버튼 문제이구나 싶어 이제 끝났다 했는데 버튼을 눌러도 변화가 없었다. 진짜 이때가 너무 힘들었다. 문제를 찾았다고 생각했을 떄 쯤이었는데 결과적으로 해결이 안되니 너무 힘들다. 그래서 그냥 로그인 화면을 그냉 디자인 없는 걸로 쓸까도 생각했다. 그래도 하나는 해결하고 싶어서 계속 두드려봤다. 모든 속성을 다 지워서 작동되는 폼과 유사한 형태까지 만들었는데도 안됐다. 말 그대로 모든거를 다 따져본 것이다. 그래서 남은것은 하나가 남게 되었다. 로그인 화면에 입력된 값을 POST 로 보내는 "form"태그가 남았다. 그 안의 속성값은 별게 없어서 문제 없어보였는데 혹시 범위 설정이 잘못 됐나 싶어 전체 폼을 범위로 설정해 작동시키자 제대로 작동을 하였다. 그런데 디자인은 무너졌다. 아주 오래전에 프론트를 해서 기억은 안나는데 그 당시에도 디자인이 무너져서 안무너지는 위치까지 form태그의 위치를 옮긴것 같다. 그래서 결론은 작동은 되지만 디자인은 일그러진 상태이다. 이건 나중에 꾸며야겠다. 일단 당장 방법도 모르고 구현해야할 일 들이 일단 산더미라 계정을 넣어보고 게시글 테스트로 해야하기 때문에 동작만 하게 하고 다음 이슈를 해결하러 가야겠다.

image