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)
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)
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})
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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})
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)
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)