2014-10-15 2 views
1

나는 StackOverflow를 샅샅이 조사 해왔다. 그러나 나에게 맞는 대답을 찾지 못했다. 필자는 Python과 Django에 비교적 익숙하지 않기 때문에 잘못 생각한 것 같습니다.Django의 한보기에서 다른보기로 목록을 전달하는 방법은 무엇입니까?

간단한 예제를 만들려면 서로 다른 URL을 가진 두 개의보기를 생각해보십시오. 이것은 완벽한 코드가되어서는 안됩니다. 나는보기 1에서보기 2로 항목의 가변 길이 목록을 얻는 방법을 알아 내려고하고 있습니다. 목록을 가변적으로 길게 만들 수 있기 때문에 URL을 통해이를 수행하는 방법이 없습니다. 이 일이 극히 쉬운 일이 아니어야합니까?

def view2(request, list_to_process): 

    use list_to_process to manufacture formset (e.g. make a formset with one entry for each item in the list) 
    return render(request, 'Project/template2.html', {'formset': formset}) 

def view1(request): 

    if request.method == "POST": 
     if form.is_valid(): 
      result = form.cleaned_data 
      list_to_process = [] 
      for item in result: 
       list_to_process.append(item) 
      *WHAT CODE DO I USE HERE TO CALL VIEW2 AND SEND IT list_to_process AS AN ARGUMENT OR REQUEST ADDITION?* 
    else: 
     formset = formsettype() 
     helper = AssayHelper() (defined elsewhere) 
     helper.add_input(Submit("submit", "Submit") 
     return render(request, 'Project/template1.html', {'formset': formset, 'helper': helper}) 

누군가 도움을받을 수 있습니까? 감사.

+2

view1 내부에서 대신 직접 호출 할 때, 예를 들어, 오류가 발생하지 않습니다 따라서 그들은 선택 사항이다하고 세션에? –

답변

2

정확히 세션이 필요한 것입니다. 보기 1 :

request.session['list'] = list_to_process 

그리고보기 2

는 :

list_to_process = request.session['list'] 
+0

여전히 클래스 기반보기로 전환 할 수 있습니까? 아니면 다른 접근법이 있습니까? 고맙습니다. –

+0

어떤 종류의보기를 사용하든 별 차이가 없지만 세션은보기간에 개체를 유지하는 올바른 방법입니다. –

+0

위의 구현을 사용하여 하나의 클래스 기반 뷰에서 다른 클래스 기반 뷰로 인수를 전달하는 예제로 안내 할 수 있습니까? –

0

당신이 다음 @Daniel에 의해 주어진 답을 이동 session를 사용하고자하는 경우,

그러나 귀하의 경우에 보인다 당신은 별도의 URL에 가지 않을거야, 당신은 단지 같은 URL에서 렌더링해야하지만 그보기에서 출력이 필요해 named paramter이 같은 파이썬 함수의 도움을 받아 -

def view2(request, list_to_process=None, **kwargs): 

    use list_to_process to manufacture formset (e.g. make a formset with one entry for each item in the list) 
    return render(request, 'Project/template2.html', {'formset': formset}) 

def view1(request): 

    if request.method == "POST": 
     if form.is_valid(): 
      result = form.cleaned_data 
      list_to_process = [] 
      for item in result: 
       list_to_process.append(item) 
      return view2(request, list_to_process=list_to_process) 
    else: 
     ..... 

named parameter 사용의 이점은 제공하지 않을 경우 해당 뷰는 왜 넣어 수 없습니다

+0

실제로, 그것은 같은'views.py'에있는 또 다른 함수입니다 - 당신은 간단하게 그것을 호출 할 수 있습니다 :) –

관련 문제