코딩한걸음
728x90
반응형

Today I Learned


어떤 문제가 있었는지

프로젝트 작업으로 user mypage를 맡았다.

POST요청으로 정보를 보낼 때 공백으로 제출하면 기존의 값이 전달되도록 하고싶었다.

근데 공백으로 제출하면 자꾸 기존값 대신 공백으로 덮어씌워짐

 


내가 시도해 본 것들

@login_required
def user_mypage_update(request):
	user = request.user
    if request.method == 'POST':
        form = UserUpdateForm(request.POST, instance=request.user)
        profileform = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
		
        # 예외처리
        if form.fleds['email'] == '':
        	form.fleds['email'] = user.email
        
        if form.is_valid() and profileform.is_valid():
            form.save()
            profileform.save()
            messages.success(request, '프로필이 업데이트 되었습니다!')
            return redirect('/user/mypage')
    else:
        user_form = UserUpdateForm(instance=request.user)
        profile_form = ProfileForm(instance=request.user.profile)
    return render(request, 'user/mypage_update.html', {'form': user_form, 'profileform': profile_form})

이런식으로 예외처리를 해봤는데 안됨 

 


어떻게 해결 했는지

결국 엄청 고민하다가 걍 input태그에 기본값으로 줬다..

공백으로 남기면 기존값이 들어간다는것도 사용자 입장에서는 잘 모를거같다

하지만 기본값으로 기존값이 들어가 있다면 안 바꿀 사람들은 걍 놔둘거같다

 

## user/update.html
# input 태그 안에 value="{{user.last_name}}" required 추가

<div class="mb-3">
    <label for="{{ form.email.id_for_label }}" class="form-label">이메일 주소</label>
    <input type="email" class="form-control" id="{{ form.email.id_for_label }}"
           name="{{ form.email.html_name }}" value="{{user.email}}" required>
</div>

이렇게 하면 input태그 안에 기본값으로 user.email이 들어간다.

추가로 required로 공백입력을 막으면 form정보에 공백이 사라지게 되는 것

 


무엇을 새롭게 배웠는지

input 태그의 value, required와 form정보를 다루는 방법을 알게 되었다

 

하고싶은게 직접적으로 안된다면 우회하는 방법도 생각을 해봐야겠다.

 

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!