2010-06-19 5 views
11

Django의 메시지 모듈을 사용하고 싶습니다. 그러나 사용자가 페이지를 다시로드하자마자 메시지가 사라지는 대신 사용자가 메시지 옆에있는 X를 클릭 할 때까지 내 메시지를 유지하고 싶습니다.django 메시지를 만드는 방법 StackOverflow 스타일?

두 가지 문제가 있습니다. 메시지의 컨텍스트 프로세서를 으로 만들지 마십시오. 메시지에 액세스하면 메시지가 삭제됩니다. 나중에 사용자가 "제거"버튼 (ajax 호출을 호출 함)을 클릭하면 명시 적으로 DB에서 메시지를 삭제합니까?

감사합니다.

답변

8

귀하의 경우 django.contrib.messages은 좋은 곳으로 가져 오지 않습니다. RoR 플래시 시스템에서 영감을받은 메시지 시스템입니다. 메시지가 남아 있지 않아야합니다.

등록 된 사용자의 메시지를 데이터베이스에 저장하는 고유 한 메시징 시스템 (django-persistent-messages 일 가능성이 있습니다)을 만들어야합니다.

  • 그것은
  • 사용자에 대한 외래 키를 가진 모델을 구현하는 매우 간단한 작업이다
  • 뷰가 메시지
  • 을 소비하는 템플릿에서 사용할 수있는 메시지를 가지고 상황에 맞는 프로세서 메시지를 만드는 도우미 함수 일 수도 있습니다.

다른 사람들이 그렇게하면 ===

+5

현재 약간의 메시지 통지 기능을 제공하는 5 개의 응용 프로그램이 있습니다. http://code.djangoproject.com/wiki/SessionMessages –

+0

감사합니다 @Guillaume Esquevin, 이것은 세션 대신 사용자에게 연결된 최상의 방법 인 것처럼 보입니다. –

+0

초보자 질문 - 왜 미들웨어 클래스가 필요합니까? 내가 알 수있는 한, context_processor는 모든 후킹 작업을 수행합니까, 아니면 제가 잘못 했습니까? –

2

장고 메시지가 좋은 출발점처럼 보일 수도 있지만 어디로 가고 싶은지에 왜곡이 있어야하며 장고의 향후 릴리스가 해킹을 중단하지 않을 것이라고 저는 믿지 않을 것입니다.

자신의 UserMessage 모델을 구현하면 장기적으로 더 나은 서비스를 제공 할 수 있습니다. 이를 통해 메시지 수명주기를 완벽하고 명확하게 제어 할 수 있습니다. 재사용 가능한 멋진 앱을 만들 수도 있습니다.

+0

1.2 이후 Django는 이전 API와 다른 새로운 메시지 프레임 워크를 사용합니다.다른 모든 contrib 구성 요소만큼 안정적입니다. –

7

1.2 이후 Django는 새로운 메시지 프레임 워크 인 django.contrib.messages을 가지고 있습니다. 이제 auth 모듈에서 완전히 분리되어 더 많은 기능을 제공합니다. 예를 들어, expiration of messages을 처리하는 기본적인 방법을 제공합니다.

간단한 쿠키 기반 사용자 알림 시스템을 제공하는 django-cnotes 응용 프로그램을 살펴볼 수도 있습니다. CNOTES_AUTO_CLEARFalse으로 설정하면 음을 자동으로 지울 수 없습니다.

django-notices이 있으며, 내장 메시지 알림 시스템을 대체 할 수 있습니다. 마술은 없지만 우아하고 간단한 API를 제공합니다.

+0

사용자 모듈에 연결된 대체품이 있습니까? 즉, 메시지가 항상 사용자에게 표시되고 특정 세션에 묶이지 말아야합니다. –

4

2010 년 말 이후 정확히이 목표를 위해 django-persistent-messages 라이브러리가 있습니다. 합리적으로 잘 문서화되어 있으며 Stack Overflow 스타일의 메시징 시스템을 만드는 데 적합합니다.

또한 내장 Django 메시징 시스템과 통합되어 있기 때문에 코드 변경이 비교적 적으며 영구적 일 필요가없는 메시지에도 원래 시스템을 사용할 수 있습니다.

관련 문제