def update(request): #POST로 진입 되었는데, id가 실제 있는것인지 확인 if request.method == 'POST' and 'id' in request.POST: #POST이면 데이터 수정 Restaurant = models #요청해서 들어온 해당 값을 불러옴 item = get_object_or_404(Restaurant, pk=request.POST.get('id')) #page 없음 화면 #데이터가 없다면 빈 string이 전달 password = request.POST.get("password","") #request.POST를 이용해서 instance를 초기화, # RestaurantForm에 수정을 원하는 실제 변경 값을 넣어줌 # item은 실제 데이터 값 update 하도록 해줌 -> 없으면 create됨 #updateRestaruantForm으로 수정, Update용이기 때문에 form = UpdateRestaurantForm(request.POST, instance=item) #password가 일치하면, 수정 저장 if form.is_valid() and password == item.password : item = form.save() elif request.method == 'GET': #GET이면 query parameter로 data가 들어온다는 가정하에 진행 # item = Restaurant.objects.get(pk=request.GET.get('id')) ##third/update?id=2 item = get_object_or_404(Restaurant, pk=request.GET.get('id')) #RestaurantForm으로 GET한 아이디값으로 지정, form = RestaurantForm(instance=item) #update화면으로 보냄, create랑 동일 return render(request,'third/update.html',{'form': form}) #일반적인 POST는 Redirect를 통해 list화면으로 보냄 #id 값이 없으면 list 화면으로 돌아감 return HttpResponseRedirect('/third/list/')
def update(request): if request.method == 'POST' and 'id' in request.POST: item = get_object_or_404(Restaurant, pk=request.POST.get('id')) password = request.POST.get('password', '') form = UpdateRestaurantForm(request.POST, instance=item) if form.is_valid() and password == item.password: item = form.save() elif request.method == 'GET': item = get_object_or_404(Restaurant, pk=request.GET.get('id')) form = RestaurantForm(instance=item) return render(request, 'third/update.html', {'form': form}) return HttpResponseRedirect('/third/list/')
def update(request): # request 에 id 파라미터가 있도록 if request.method == 'POST' and 'id' in request.POST: # DB 에서 불러온 기존 데이터를 업데이트 # item = Restaurant.objects.get(pk=request.POST.get('id')) item = get_object_or_404(Restaurant, pk=request.POST.get('id')) password = request.POST.get('password', '') form = UpdateRestaurantForm(request.POST, instance=item) if form.is_valid() and password == item.password: item = item.save() # 뷰 뿌리기 elif request.method == "GET": # item = Restaurant.objects.get(pk=request.GET.get('id')) item = get_object_or_404(Restaurant, pk=request.GET.get('id')) form = RestaurantForm(instance=item) return render(request, 'third/update.html', {'form': form}) return HttpResponseRedirect('/third/select/')
def update(request): # 비밀번호를 새로 입력받는 것이 아니라 기존 비밀번호와 일치하는지 검증해야 하므로 약간의 수정이 필요 if request.method == 'POST' and 'id' in request.POST: item = get_object_or_404(Restaurand, pk=request.POST.get('id')) password = request.POST.get("password", "") form = UpdateRestaurantForm( request.POST, instance=item) # NOTE: instance 인자(수정대상) 지정 if form.is_valid() and password == item.password: # 비밀번호 검증 추가 item = form.save() elif 'id' in request.GET: item = get_object_or_404(Restaurand, pk=request.GET.get('id')) form = RestaurantForm(instance=item) form.password = '' # password 데이터를 비웁니다. return render(request, 'third/update.html', {'form': form}) return HttpResponseRedirect('/third/list/') # 리스트 화면으로 이동합니다.