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
반응형