2014-12-29 2 views
1

표준 django 응용 프로그램이 있습니다. 뷰에서 (먼저 이름을 짓겠습니까) HttpResponseRedirect (Second라고하는보기로)를 호출하지만 두 번째보기로 전송하려는 일부 데이터가 있습니다. 이것을 달성하기 위해 어떤 옵션이 필요합니까?Django, 변수 이동

하나는 GET 매개 변수를 설정하는 것이지만 좋은 해결책은 아닙니다.

또한 세션 변수를 설정할 수도 있지만 이는 최적의 솔루션이 아닙니다.

다른 가능성이 있습니까? 예를 들어 컨텍스트 프로세서 나 비슷한 것을 사용할 수 있습니까?

내 질문에 모든 정보가 포함되어 있지는 않지만 누군가 내게 좋은 팁을 줄 수 있기를 바랍니다.

+1

희망을 갖고 싶습니다. 영어를 조금 편집했습니다. "어떤 옵션이 있습니까?"와 같은 문구에 수축을 사용하지 않을 것입니다. –

+0

안녕하세요, 감사합니다. 수정 사항을 읽었습니다. 내 모국어는 영어가 아니므로 적어도 배웠습니다 : -). – user2194805

답변

2

세션 변수가 최선의 해결책이 아닌 이유가 확실하지 않습니다. 반대로, 이것들은 절대적으로 이것을위한 해결책입니다.

처음보기에서는 request.session['first_data'] = my_data을, 그 다음은 my_data = request.session.pop('first_data')으로 간단히 할 수 있습니다.

+0

예,이 솔루션이 작동합니다. 그게 사실이지만, 내가 사용할 수있는 다른 가능성이 있다는 것을 알고 싶습니까? 물론 그것은 여러 번 발생하기 때문에 결국에는 세션 변수를 처리하기 위해 컨텍스트 프로세서를 사용할 것입니다.하지만 여전히 궁금합니다. 나는 다른 가능성을 찾지 못했다. – user2194805

+0

둘째로, 같은 페이지에서 더 많은 인스턴스를 열면 세션에 만족하지 않습니다. – user2194805

+0

분명히 두 번째 함수는 필요한 데이터를 알고 있습니다. 따라서이 정보를 인수로 취해야하므로'reverse'를 통해이 작업을 수행해야합니다. 세션은 정보의 장기 캐시에 유용하지만 즉시 함수 호출의 경우 db 히트를 할 필요가 없습니다. –

1

두 번째보기가 몇 가지 인수를 취하고 있다고 가정합니다.이 두 가지보기는 전달하려는 것입니다. reverse() 함수를 사용하여 전달해야합니다. 그러면 URL이 만들어지고 인수가 필요한 위치로 이동합니다. 예를 들어, second 경우 두 개의 인수를 복용하는 기능이 같이 할 수있다 :

HttpResponseRedirect(reverse (second, urlconf = "myapp.urls", args = ['foo arg', 2])) 

당신이 second 함수의 인수에 해당하지 않는 전달할 데이터가 다음 세션이 합리적인 대체 될 수있는 경우 - 하지만 너 자신에게 물어봐야 해, 왜 안돼?