예제 #1
0
파일: views.py 프로젝트: hyywon/Django
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/')
예제 #2
0
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/')
예제 #3
0
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/')
예제 #4
0
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/')  # 리스트 화면으로 이동합니다.