Tôi biết câu hỏi này nghe có vẻ lạ, nhưng xin vui lòng, hãy để tôi giải thích bản thân mình.Django: Xóa tin nhắn trước khi chúng được hiển thị
Tôi đang sử dụng trình trang trí để làm cho thư tồn tại cho đến khi người dùng thực sự loại bỏ thông báo đó (giống như hành vi của các thư bị tràn của ngăn xếp). Vấn đề là, do kết quả của việc này, tin nhắn được thêm vào trước khi người dùng đăng xuất, và vì vậy tin nhắn được hiển thị ngay sau khi người dùng đăng xuất. Tôi tự hỏi cách tốt nhất để xóa thư trong chế độ xem đăng xuất là gì. Tôi đã nghĩ về hai cách để làm điều này, và tôi tự hỏi liệu có ai có thể nghĩ ra một cách tốt hơn không.
tôi đang thiên vị này:
storage = messages.get_messages(request)
storage.used = True
Over này:
storage = messages.get_messages(request)
del storage._loaded_messages[0]
Đối với tôi cách thứ hai dường như rõ ràng hơn, mặc dù nó là xấu xí: Mục đích của tôi là để loại bỏ các hiện tin nhắn được tải và điều này làm cho điều đó rõ ràng. Cách đầu tiên sử dụng một phương tiện mà thông điệp sẽ được xóa như là một tác dụng phụ ... nhưng ít nhất nó không dựa vào một biến dunder ... bạn nghĩ gì?
Tôi đoán storage.used = True được triển khai theo mặc định. Bạn không cần phải viết nó. Bạn cần phải viết storage.used = False nếu bạn ghi đè lên hành vi mặc định. –
Tôi đã kết thúc với phương pháp đầu tiên của tôi. Về cơ bản tôi muốn ép buộc hành vi mặc định mà không hiển thị thông báo. Đặt storage.used = True làm cho nó nghĩ rằng nó đã được hiển thị các tin nhắn, và do đó, nó làm việc ra cho tôi. – IntrepidDude
Tôi đồng ý phương pháp đầu tiên tốt hơn. Nếu bạn muốn làm cho nó rõ ràng hơn, bạn luôn có thể tạo ra một hàm gọi là 'clear_messages' mà thực hiện hai bước đó. Sau đó, nếu vì lý do nào đó, hành vi của các thay đổi 'storage.used = True', bạn có thể cập nhật hàm. –