python - 호출 - HTTP 리다이렉트를 사용하여 정보를 전달하는 법(장고에서)




장고 redirect (8)

양식 제출을 수락하고 모델을 업데이트하는보기가 있습니다.

모델을 업데이트 한 후 다른 페이지로 리디렉션하고 "Field X successfully updated"와 같은 메시지를이 페이지에 표시하려고합니다.

이 메시지를 다른 페이지로 "전달"하려면 어떻게해야합니까? HttpResponseRedirect는 URL 만 허용합니다. 이전에 다른 사이트에서이 작업을 수행 한 것을 보았습니다. 이것이 어떻게 완성 되었습니까?



Pydev UA가 사용하는 솔루션은 덜 관입 적이기 때문에 코드에서 거의 수정하지 않고 사용할 수 있습니다. 메시지를 전달할 때 메시지를 처리하는보기에서 컨텍스트를 업데이트 할 수 있으며 템플릿에서 표시 할 수 있습니다.

나는 같은 접근법을 사용했지만 간단한 텍스트를 전달하는 대신 유용한 필드에 정보를 담은 나에게 전달했다. 그런 다음보기에서 컨텍스트를 업데이트 한 다음 렌더링 된 템플릿을 업데이트 된 컨텍스트로 반환했습니다.

간단하고 효과적이며 방해가되지 않습니다.


나는 모든 대답을 읽고 점검했으며, 지금가는 길은 메시징 프레임 워크를 사용 하고 있는 것으로 보인다. 답장 중 일부는 꽤 오래되었고 게시 당시 적절한 방법이었을 것입니다.


나는이 코드가 당신을 위해 일해야한다고 생각한다.

request.user.message_set.create(message="This is some message")
return http.HttpResponseRedirect('/url')

리디렉션 할 URL에서 쿼리 매개 변수로 메시지를 전달할 수 있습니까? 끔찍한 짓은 아니지만 일해야합니다.

return HttpResponseRedirect('/polls/%s/results/?message=Updated" % p.id)

해당 뷰에서 메시지 매개 변수를 확인하고, nasties에 대해 스크럽 한 다음 맨 위에 표시합니다.


많은 솔루션이 있습니다.

1 Django-trunk 버전 사용 - 익명 사용자에게 메시지 전송 지원

2 세션

def view1(request):
    request.session['message'] = 'Hello view2!'
    return HttpResponseRedirect('/view2/')


def view2(request):
    return HttpResponse(request.session['message'])

3 매개 변수로 리디렉션

return HttpResponseRedirect('/view2/?message=Hello+view2')

쿠키 4 개


모든 제안이 지금까지는 효과가 있지만 Ry4an (요청 URL에서 전달)을 사용하는 것이 좋습니다. 미리 정의 된 텍스트 메시지 세트 내에서 실제 텍스트를 코딩 된 텍스트로 변경하십시오.

여기에 두 가지 이점이 있습니다.

  1. 나쁜 콘텐츠를 제거하여 무언가 해킹 할 가능성을 줄입니다.
  2. 필요한 경우 나중에 메시지를 현지화 할 수 있습니다.

다른 쿠키 관련 방법 .. 글쎄, 그들은 브라우저가 쿠키를 지원하지 않으면 작동하지 않으며, 약간 더 비쌉니다 ..하지만 약간. 그들은 실제로 눈을 깨끗하게합니다.






http