2015-01-27 1 views
0

저는 이미 인덱스 컨트롤러에 정의 된 것들로부터 끌어 오는 거대한 index.html을 가지고 있습니다. 나는 어떤 처리를하는 또 다른 페이지를 가지고 있는데, 성공하면 index.html을 다시 렌더링하려고하지만, 데이터가 추가되어 내보기에 상태가 성공적임을 알릴 수 있습니다. 그러나 표시 할보기에 표시 할 context의 모든 정보가 필요합니다. 내 데이터 사전을 index.html로 전달하는 좋은 방법은 무엇입니까 def process(request):context을 반복하지 않고 있습니까? 감사합니다Django : RequestContext로 render_to_response로 만든 다른 페이지로 데이터 첨부로 리디렉션 할 수 있습니까?

def index(request): 
    context = RequestContext(request) 
    context['something'] = 'something' 
    # much much more 
    return render_to_response('index.html', context) 

def process(request): 
    data['status'] = 'success' 
    return ??? ('index.html', context, data?) 

답변

0
는 하나의 간단한 해결책이 세션에 일부 데이터를 추가 한 다음 다시 인덱스보기로 리디렉션 할 수

: OP FROM

from django.shortcuts import redirect 

def index(request): 
    context = RequestContext(request) 
    context['something'] = 'something' 
    # much much more 

    if 'success' in request.session: 
     context['success'] = request.session['success'] 
     del(request.session['success']) 

    return render_to_response('index.html', context) 

def process(request): 
    request.session['status'] = 'success' 
    return redirect("name-of-index-view") 

편집 : 내 경우에는 , 난 단지 상태를 원하는

try: 
    context["status"] = request.session['status'] 
    del request.session['status'] 
except KeyError: 
    context["status"] = 'fail' 
+0

이것은 경우에 따라 유용 할 수 있지만'request.session [ 'status']'한 번만 저장하려고합니다. 나는 그것이 세션의 나머지 부분을 통해 지속 싶지 않아요. – pyramidface

+0

신경 쓰지 마라. 나는 대신 내가 쓴 글을 업데이트했다. – pyramidface

0

가 함수에 데이터 생성을 추출하고이 FUNC 전화 : def index 안에 내가 넣어, 그래서 대신 전체 세션에 걸쳐 지속의 한 번 저장하기 두보기에서 기 :

def _get_context(request): 
    context = RequestContext(request) 
    context['something'] = 'something' 
    # much much more 
    return context 

def index(request): 
    return render_to_response('index.html', {}, _get_context(request)) 

def process(request): 
    data['status'] = 'success' 
    return render_to_response('index.html', {'status': 'success'}, 
              _get_context(request)) 

사이드 노트 : render 대신 render_to_response 사용하는 것이 좋습니다.