Exemplo n.º 1
0
def signup_view(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        # 유효성 검사를 하기 위해서
        # 데이터가 바인딩된(request.POST를 넣음) bound form을 생성
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']

            # 방법 1 - view.py에서 validation, 이런 로직을 직접구현해야해서 불편함
            # password2 = form.cleaned_data['password2']
            # is_valid = True
            # if User.objects.filter(username=username).exists():
            #     form.add_error('username', '이미 사용중인 아이디입니다.')
            #     is_valid = False
            # if password != password2:
            #     form.add_error('password2', '비밀번호와 비밀번호 확인란의 값이 다릅니다.')
            #     is_valid = False
            #
            # if is_valid:
            #     User.objects.create_user(username=username, password=password)
            #     return redirect('index')

            # 방법 2 - form.py에서 validation 작업.
            User.objects.create_user(username=username, password=password)
            # return redirect('index')

            # 회원가입 후 바로 로그인하는 비지니스 로직 추가
            user = authenticate(request, username=username, password=password)
            if user is not None:
                login(request, user)

            return redirect('index')

    else:
        form = SignupForm()
        # GET요청의 경우에는 빈폼을 생성해서 context에 넣어줌.
        # 반대로 validation을 거치지 못한 POST요청의 경우 위에서 넣어준
        #       SignupForm(request.POST)가 계속 유효하기 때문에
        #       입력한 데이터가 아래 context에 전달되서 signup 화면에 다시 렌더링됨.

    # parent_tempalte = get_template('base.html')
    # print(type(parent_tempalte))

    context = {
        'signup_form': form,

        # 동적으로 템플릿을 전달할 때
        # 'parent': 'base.html',
        # 'parent': parent_tempalte,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 2
0
def signup_view(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            User.objects.create_user(username=username, password=password)
            return redirect('index')
    else:
        form = SignupForm()

    context = {
        'signup_form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 3
0
def index(request):
    if request.method == "POST":
        form = SignupForm(data=request.POST)

    if request.user.is_authenticated:
        return redirect('posts:post-list')
    return render(request, 'index.html', {'form': form})
Exemplo n.º 4
0
def signup_view(request):
    # /signup/
    # username, password, password2가 전달되었다는 가정
    # username이 중복되는지 검사, 존재하지않으면 유저 생성 후 index로 이동
    #   password, password2가 같은지도 확인
    # 이외의경우는 다시 회원가입화면으로
    context = {
        'errors': [],
    }
    # SignupForm 인스턴스를 생성
    # 생성한 인스턴스를 Context에 전달
    # 전달받은 변수를 템플릿에서 변수 렌더링
    # 어떻게 나오나 보기
    ReceivedData = SignupForm(request)

    # 전달받은 데이터에 문제가 있을 경우, context['errors']를 채우고
    # 해당 내용을 signup.html템플릿에서 출력
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        password2 = request.POST['password2']

        is_valid = True
        if User.objects.filter(username=username).exists():
            context['errors'].append('Username already exists')
            is_valid = False
        if password != password2:
            context['errors'].append('Password and Password2 does not match')
            is_valid = False
        if is_valid:
            User.objects.create_user(username=username, password=password)
            return redirect('index')
    return render(request, 'members/signup.html', context)
Exemplo n.º 5
0
def signup_view(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']

            # is_valid=True
            # if User.objects.filter(username=username).exists():
            #     form.add_error('username','username already exists')
            #     is_valid=False
            # if password != password_confirm:
            #     form.add_error('password','password confirmation failed')
            #     is_valid=False
            # if is_valid:

            User.objects.create_user(username=username, password=password)
            return redirect('index')
    else:
        form = SignupForm()

    context = {
        'signup_form': form,
    }
    # username = request.POST['username']
    # password = request.POST['password']
    # password_confirm = request.POST['password_confirm']
    #
    # is_valid = True
    # if User.objects.filter(username=username).exists():
    #     error = 'Username already exists'
    #     context['errors'].append(error)
    #     is_valid = False
    # if password != password_confirm:
    #     error = 'Password confirmation failed'
    #     context['errors'].append(error)
    #     is_valid = False
    # if is_valid:
    #     user = User.objects.create_user(
    #         username=username,
    #         password=password,
    #     )
    #     user.save()
    #     return redirect('index')
    return render(request, 'members/signup.html', context)
def signup_view(request):
    # context = {
    #     'errors': [],
    # }
    # if request.method == 'POST':
    #     username = request.POST['username']
    #     password = request.POST['password']
    #     password2 = request.POST['password2']
    #
    #     is_valid = True
    #     if User.objects.filter(username=username).exists():
    #         context['errors'].append('Username already exists!')
    #         is_valid = False
    #     if password != password2:
    #         context['errors'].append('Password and Password2 are not equal!')
    #         is_valid = False
    #     if is_valid:
    #         User.objects.create_user(username=username, password=password)
    #         return redirect('index')
    # return render(request, 'members/signup.html', context)
    if request.method == "POST":
        form = SignupForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            password2 = form.cleaned_data['password2']
            is_valid = True
            # if User.objects.filter(username=username).exists():
            #     form.add_error('username', '이미 사용되고 있는 아이디입니다')
            #     is_valid = False
            # if password != password2:
            #     form.add_error('password2', '비밀번호 불일치')
            #     is_valid = False
            # if is_valid:
            User.objects.create_user(username=username, password=password)
            return redirect('index')
    else:
        form = SignupForm()

    context = {
        "signup_form": form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 7
0
def signup_view(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save()
            print(user)
            login(request, user)
            return redirect('todos:todo-list')
    else:
        form = SignupForm()

    secret = get_secret()
    naver_request_url = naver_login_url(
        client_id=secret['NAVER_CLIENT_ID'],
        redirect_url='http://localhost:8000/members/naver-signup',
        state='RANDOM_STATE')

    facebook_request_url = facebook_login_url(
        client_id=secret['FACEBOOK_CLIENT_ID'],
        redirect_url='http://localhost:8000/members/facebook-signup',
        state='RANDOM_STATE')

    context = {
        'signup_form': form,
        'naver_request_url': naver_request_url,
        'facebook_request_url': facebook_request_url
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 8
0
def signup(request):

    if request.method == 'POST':

        form = SignupForm(request.POST)

        # form에 들어있는 데이터가 유효한지 검사.(해당 form 클래스에서 정의한 데이터 형식에서 벋어나지 않는지 판단.)
        if form.is_valid():

            user = form.signup(
            )  #signup 메소드는 form의 메소드 인데 form은 signupForm클래스의 인스턴스이다.

            user.is_active = False
            user.save()

            send_email.delay(user.pk)

            return render(request, 'members/email_sent_succeed.html')

    else:
        form = SignupForm()

    context = {
        'form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 9
0
def signup_view(request):
    # username = request.POST['username']
    # password = request.POST['password']
    # email = request.POST['email']
    # name = request.POST['name']
    #
    # if User.objects.filter(username=username):
    #     return HttpResponse('이미 사용중인 username입니다')
    # if User.objects.filter(email=email):
    #     return HttpResponse('이미 사용중인 email입니다.')
    # user = User.objects.create(
    #     username=username,
    #     password=password,
    #     email=email,
    #     name=name,
    # )
    # login(request, user)
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('posts:post-list')
    else:
        form = SignupForm()
    context = {
        'form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 10
0
def signup_view(request):
    # render하는 경우
    #  1. POST요청이며 사용자명이 이미 존재할 경우
    #  2. POST요청이며 비밀번호가 같지 않은 경우
    #  3. GET요청인 경우
    # redirect하는 경우
    #  1. POST요청이며 사용자명이 존재하지 않고 비밀번호가 같은 경우
    """
    if request.method가 POST면:
        if 사용자명이 존재하면:
            render1
        if 비밀번호가 같지 않으면:
            render2
        (else, POST면서 사용자명도없고 비밀번호도 같으면):
            redirect
    (else, GET요청이면):
        render
    if request.method가 POST면:
        if 사용자명이 존재하면:
        if 비밀번호가 같지 않으면:
        (else, POST면서 사용자명도없고 비밀번호도 같으면):
            return redirect
    (POST면서 사용자명이 존재하면)
    (POST면서 비밀번호가 같지않으면)
    (POST면서 사용자명이 없고 비밀번호도 같은 경우가 "아니면" -> GET요청도 포함)
    return render
    :param request:
    :return:
    """
    context = {}
    if request.method == 'POST':
        # POST로 전달된 데이터를 확인
        # 올바르다면 User를 생성하고 post-list화면으로 이동
        # (is_valid()가 True면 올바르다고 가정)
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save()
            # user = User.objects.create_user(
            #     username=form.cleaned_data['username'],
            #     password=form.cleaned_data['password1'],
            # )
            login(request, user)
            # form이 유효하면 여기서 함수 실행 종료
            return redirect('posts:post-list')
        # form이 유효하지 않을 경우, 데이터가 바인딩된 상태로 if-else구문 아래의 render까지 이동
    else:
        # GET요청시 빈 Form을 생성
        form = SignupForm()

    # GET요청시 또는 POST로 전달된 데이터가 올바르지 않을 경우
    #  signup.html에
    #   빈 Form또는 올바르지 않은 데이터에 대한 정보가
    #   포함된 Form을 전달해서 동적으로 form을 렌더링
    context['form'] = form
    return render(request, 'members/signup.html', context)
Exemplo n.º 11
0
def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST, request.FILES)
        if form.is_valid():
            user = form.save()
            return render(request, 'members/signup-done.html')
    else:
        form = SignupForm()
    context = {
        'form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 12
0
def signup_view(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)

        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('posts:post_list')
    else:
        form = SignupForm()
    context = {'form': form}
    return render(request, 'members/signup.html', context)
Exemplo n.º 13
0
def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST, request.FILES)
        if form.is_valid():
            user = form.save()
            django_login(request, user)
            return redirect('posts:post-list')
    else:
        form = SignupForm()
    context = {
        'signup_form':form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 14
0
def signup_view(request):
    if request.method == 'POST':
        signup_form = SignupForm(data=request.POST)

        if signup_form.is_valid():
            user = signup_form.signup()
            login(request, user)
            return redirect('posts:post-list')

    else:
        signup_form = SignupForm()

    context = {'signup_form': signup_form}

    return render(request, 'members/signup.html', context)
Exemplo n.º 15
0
def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST, request.FILES)
        if form.is_valid():
            user = form.signup()
            login(request,
                  user,
                  backend='django.contrib.auth.backends.ModelBackend')
            return redirect('index')
    else:
        form = SignupForm()

    context = {
        'form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 16
0
def signup_view(request):

    if request.method == 'POST':
        form = SignupForm(request.POST, request.FILES)
        # form에 들어있는 데이터가 유효한지 검사
        if form.is_valid():
            user = form.signup()
            login(request, user)
            return redirect('posts:post-list')
    else:
        form = SignupForm()

    context = {
        'form': form,
    }

    return render(request, 'members/signup.html', context)
Exemplo n.º 17
0
def signup_view(request):
    context = {
        'form': SignupForm(),
    }
    if request.method == 'POST':
        username = request.POST['username']
        password1 = request.POST['password1']
        password2 = request.POST['password2']

        if User.objects.filter(username=username).exists():
            context['error'] = f'사용자명({username})은 이미 사용중입니다.'
        elif password1 != password2:
            context['error'] = '비밀번호와 비밀번호 확인란의값이 일치하지 않습니다.'
        else:

            # create_user메서드는 create와 달리 자동으로 password해싱을 해줌
            user = User.objects.create_user(
                username = username,
                password = password1,
            )
            login(request, user)
            return redirect('posts:post-list')

        return render(request, 'members/signup.html', context)
Exemplo n.º 18
0
def signup_view(request):
    # /signup/
    # username, password, password2가 전달되었다는 가정
    # username이 중복되는지 검사, 존재하지않으면 유저 생성 후 index로 이동
    #   password, password2가 같은지도 확인
    # 이외의경우는 다시 회원가입화면으로
    context = {
        'errors': [],
        # 'form':SignupForm,
    }
    # signupForm 인스턴스 생성
    # context에 인스턴스를 전달
    # 전달받은 변수를 템플리셍서 변수 렌드링
    signup_form = SignupForm()
    context['signup_form'] = signup_form

    # 전달받은 데이터에 문제가 있을 경우, context['errors']를 채우고
    # 해당 내용을 signup.html템플릿에서 출력
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            # 여기에서 validation이 이루어짐
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            # password2 = form.cleaned_data['password2']
            # is_valid = True

            # if User.objects.filter(username=username).exists():
            #     form.add_error('username', '이미 사용되고 있는 아이디입니다')
            #     is_valid=False
            # if password != password2:
            #     form.add_error('password2', '비밀번호와 비밀번호 확인란의 값이 다릅니다. ')
            #     is_valid = False
            # if is_valid:
            User.objects.create_user(username=username, password=password)
            return redirect('index')
    else:
        form = SignupForm()
    context = {
        'signup_form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 19
0
def signup(request):

    if request.method == 'POST':

        form = SignupForm(request.POST)

        # form에 들어있는 데이터가 유효한지 검사.(해당 form 클래스에서 정의한 데이터 형식에서 벋어나지 않는지 판단.)
        if form.is_valid():

            user = form.signup(
            )  #signup 메소드는 form의 메소드 인데 form은 signupForm클래스의 인스턴스이다.

            login(request, user)
            return redirect('index')

    else:
        form = SignupForm()

    context = {
        'form': form,
    }
    return render(request, 'members/signup.html', context)
Exemplo n.º 20
0
def signup_view(request):
    """
    ! config.views.indes 삭제

    Template: index.html을 복사해서
        /members/signup.html
    URL: /
    form: members.forms.SignupForm

    생성에 성공하면, 로그인 처리 후 posts:post-list로 redirect 처리
    """
    if request.method == 'POST':
        form = SignupForm(request.POST)

        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('posts:post-list')
    else:
        form = SignupForm()

    context = {'form': form}
    return render(request, 'members/signup.html', context)
Exemplo n.º 21
0
def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = False
            user.save()
            current_site = get_current_site(request)
            mail_subject = 'Activate your account.'
            message = render_to_string('members/user_activate_email.html', {
                'user': user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)).decode(),
                'token': account_activation_token.make_token(user),
            })
            to_email = form.cleaned_data.get('email')
            email = EmailMessage(
                mail_subject, message, to=[to_email]
            )
            email.send()
            return render(request, 'members/signup_done.html')
    else:
        form = SignupForm()
    return render(request, 'members/signup.html', {'form': form})
Exemplo n.º 22
0
def signup_view(request):
    # if request.method == "POST":
    #     form = UserCreationForm(request.POST)
    #     if form.is_valid():
    #         form.save()
    #         username = form.cleaned_data.get('username')
    #         raw_password = form.cleaned_data.get('password')
    #         user = authenticate(username=username, password=raw_password)
    #         login(request, user)
    #         return redirect('index')
    # else:
    #     form = UserCreationForm()
    # return render(request, 'members/signup.html', {'form': form})

    # context = {
    #     "errors": [],
    # }

    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            # password2 = form.cleaned_data['password2']

            is_valid2 = True
            # if User.objects.filter(username=username).exists():
            #     form.add_error('username', '이미 사용되고 있는 아이디입니다.')
            #     is_valid2 = False
            # if password != password2:
            #     form.add_error('password2', '비밀번호와 비밀번호 확인란의 값이 다릅니다.')
            #     is_valid2 = False
            # if is_valid2:
            User.objects.create_user(username=username, password=password)
            return redirect('index')

    else:
        form = SignupForm()

    parent_template = get_template('base.html')
    context = {
        'parent': parent_template,
        'signup_form': form,
    }

    # # 전달받은 데이터에 문제가 있을 경우, context['errors']를 채우고
    # # 해당 내용을 signup.html템플릿에서 출력
    # if request.method == 'POST':
    #     username = request.POST['username']
    #     password = request.POST['password']
    #     password2 = request.POST['password2']
    #
    # is_valid = True
    # if User.objects.filter(username=username).exists():
    #     context['errors'].append('Username already exists')
    #     is_valid = False
    # if password != password2:
    #     context['errors'].append('Password and Password2 is not equal')
    #     is_valid = False
    # if is_valid:
    #     User.objects.create_user(username=username, password=password)
    #     return redirect('index')
    return render(request, 'members/signup.html', context)
Exemplo n.º 23
0
def signup_view(request):
    """
    render하는 경우
    1. POST요청이며 사용자명이 이미 존재할 경우
    2. POST요청이며 비밀번호가 같지 않는 경우
    3. GET요청인 경우
    redirect하는 경우
    1. POST요청이며 사용자명이 존재하지 않고 비밀번호가 같은 경우

    if request.method가 POST라면:
        if 사용자명이 존재하면;
            render1
        if 비밀번호가 같지 않으면;
            render2
        (else, POST면서 사용자명도없고 비밀번호도 같으면):
            redirect
    (else, GET요청이면):
        render

    if request.method가 POST라면:
        if 사용자명이 존재하면;
        if 비밀번호가 같지 않으면;
        (else, POST면서 사용자명도없고 비밀번호도 같으면):
            return redirect
    (POST면서 사용자명이 존재하면)
    (POST면서 비밀번호가 같지않으면)
    (POST면서 사용자명이 없고 비밀번호도 같은 경우가 "아니면" -> GET요청도 포함)
    return render
    """
    # URL: /members/signup/
    # Template: members/signup.html
    # Form:
    # SignupForm
    #   username, password1, password2를 받음
    # 나머지 요소들은 login.html의 요소를 최대한 재활용

    # GET요청시 해당 템플릿 보여주도록 처리
    # base.html에 있는 'Signup'버튼이 이 쪽으로 이동할 수 있도록 url 링크걸기
    context = {}
    if request.method == 'POST':
        # POST로 전달된 데이터를 확인
        # 올바르다면 User를 생성하고 Post-list화면으로 이동
        # (is_valid()가 True면 올바르다고 가정)
        form = SignupForm(request.POST)

        if form.is_valid():
            user = form.save()
            # user = User.objects.create_user(
            #     username=form.cleaned_data['username'],
            #     password=form.cleaned_data['password1'],
            # )
            login(request, user)
            return redirect('posts:post-list')

    # GET요청시 또는 POST로 전달된 데이터가 올바르지 않을 경우
    # signup.html에
    #   빈 Form또는 올바르지 않은 데이터에 대한 정보가
    #  포함된 Form을 전달해서 동적으로 form을 렌더링
    else:
        form = SignupForm()
    context['form'] = form
    return render(request, 'members/signup.html', context)