Hiçbir şey kaçırdığına benzemiyor. user
nesnesine ileti ekleme işlevi, Django 1.2'de kullanımdan kaldırılacak ve tamamen 1.4'te kaldırılacaktır (django kimlik doğrulama belgelerinden here). Ve yeni mesajlaşma depolama arka uçlarının hiçbiri, mesajların kalıcı (örneğin, veri tabanı veya dosya depolaması) için önceden yuvarlanmamıştır.
Ancak her şey kaybolmuyor. Yeni ileti depolama arka uç kodunda, bir mesajı saklarken geçerli bir istekte bulunduğunuz konusunda ısrar eden hiçbir şey göremiyorum (örneğin bir iletinin saklanması, örneğin bir cron işi işe yarar). Eğer ben olsaydım, bir veritabanı tablosundaki mesajları saklayan kendi arka ucumu alırdım.
Düzenleme: uygulamak olabilir Bu nasıl
olası bir yaklaşımdır yeni mesajlaşma backends birine bir cıvata gibi çevrimdışı mesaj depolama uygulanması ile ok ise:
tanımlayın bir ileti Modeli
class UserMessage(models.Model):
user = models.ForeignKey('auth.User')
message = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
manuel olarak cron işigelen UserMessages oluşturmak
def some_func_in_my_cron_job():
...
UserMessage.create(user=some_user, message="Something happened")
...
- ayarlarında yeni mesaj motorunda GETin()
from django.contrib.messages.storage.session import SessionStorage
class MyStorageEngine(SessionStorage):
def _get(self, *args, **kwargs):
if hasattr(self.request, "user") and self.request.user.is_authenticated():
offline_messages = UserMessage.objects.filter(user=self.request.user)
# and delete the messages from the database
else:
offline_messages = None
other_messages = super(MyStorageEngine, self)._get(*args, **kwargs)
# all_messages = combine offline_messages and other_messages
return all_messages
açın mevcut motorların yazılmasının, yeni bir mesaj saklama motorunu tanımlayın ve yeniden tanımlamak:
MESSAGE_STORAGE = 'myproj.custom_message_storage.MyStorageEngine'
Bu yaklaşımla, yeni mesajlaşma API'sini kullanarak veritabanınızın arka ucuna yazmazsınız, ancak okuyabilirsiniz. el ile ayarlanmış mesajlarınız. Bu yardımcı olur umarım.
Cevabınız için teşekkürler. Bir mesaj depolama arka ucu yazmak kolay olmalı. Bununla birlikte, bir kullanıcıya bir mesajın bağlanması ve ardından bu kullanıcının çevrimiçi hale gelmesi durumunda görüntülenmesi karmaşıktır. Baska öneri? – shanyu
Cevaba bir düzenleme olarak olası bir yaklaşım eklendi. – zlovelady
Çok yardımcı. Teşekkürler.. – shanyu