9

मैं कुछ समय से django में विकसित हो रहा हूं, और ब्लॉग लिखने, प्रश्न पोस्ट करने, सामग्री साझा करने जैसी कार्यक्षमता रखने वाली एक अच्छी वेबसाइट विकसित की है। हालांकि अभी भी एक चीज है जो गायब है और यानी उपयोगकर्ताओं के लिए अधिसूचना बना रही है।किसी उपयोगकर्ता को सूचित करने के लिए django-अधिसूचना का उपयोग कैसे करें

मैं क्या करना चाहता हूं उपयोगकर्ताओं को उनके प्रोफाइल में सूचित करना है, जब भी कोई अपनी पोस्ट पर टिप्पणी करता है, या यदि वे किसी विशेष पोस्ट का पालन कर रहे हैं और उस पर एक अपडेट है, तो उस अद्यतन के उपयोगकर्ता को सूचित करें। मैंने कई अनुप्रयोगों को देखा है लेकिन मैं अभी भी इस बारे में बहुत उलझन में हूं कि इसे कैसे किया जाए।

django-notification का उपयोग करने के मामले में मुझे एक इंप्रेशन (जो गलत हो सकता है) लगता है कि मैं इसे केवल ईमेल के माध्यम से उपयोगकर्ता को सूचित करने के लिए उपयोग कर सकता हूं, यानी मैं इन सूचनाओं को उपयोगकर्ता प्रोफ़ाइल में नहीं दिखा सकता, जैसा कि हमारे पास है फेसबुक।

सबसे पहले मैं जानना चाहता हूं कि मैं गलत हूं, और फिर मुझे इसे करने के बारे में कुछ उचित ट्यूटोरियल या मार्गदर्शन की ज़रूरत है। मुझे पता है कि अधिसूचना कैसे पंजीकृत करें और इसे उचित सिग्नल पर भेजें, लेकिन यदि यह किया जा सकता है, तो इन नोटिस को टेम्पलेट में कैसे दिखाया जाए, इस पर कोई दस्तावेज नहीं है।

कोई मार्गदर्शन/ट्यूटोरियल/प्रारंभ करने वाला दस्तावेज़ गहराई से सराहना की जाएगी।

उत्तर

12

हाँ django-सूचनाएं केवल ईमेल अधिसूचनाओं के लिए डिज़ाइन की गई हैं। बहुत आसान टेम्पलेट्स के लिए अब

from django.db import models 
from django.contrib.sites.models import Site 
from django.db.models import signals 
from notification import models as notification 

def create_notice_types(app, created_models, verbosity, **kwargs): 
    notification.create_notice_type("new_comment", "Comment posted", "A comment has been posted") 
signals.post_syncdb.connect(create_notice_types, sender=notification) 

def new_comment(sender, instance, created, **kwargs): 
    # remove this if-block if you want notifications for comment edit too 
    if not created: 
     return None 

    context = { 
     'comment': instance, 
     'site': Site.objects.get_current(), 
    } 
    recipients = [] 

    # add all users who commented the same object to recipients 
    for comment in instance.__class__.objects.for_model(instance.content_object): 
     if comment.user not in recipients and comment.user != instance.user: 
      recipients.append(comment.user) 

    # if the commented object is a user then notify him as well 
    if isinstance(instance.content_object, models.get_model('auth', 'User')): 
     # if he his the one who posts the comment then don't add him to recipients 
     if instance.content_object != instance.user and instance.content_object not in recipients: 
      recipients.append(instance.content_object) 

    notification.send(recipients, 'new_comment', context) 

signals.post_save.connect(new_comment, sender=models.get_model('comments', 'Comment')) 

,:

यहाँ है कि आप अपने models.py को जोड़ सकते हैं और tweak अपनी जरूरतों के लिए एक संकेत स्लॉट है।

टेम्पलेट्स/अधिसूचना/new_comment/short.txt

{{ comment.user }} commented on {{ comment.object }} 

टेम्पलेट्स/अधिसूचना/new_comment/notice.html

<a href="{{ comment.user.get_absolute_url }}">{{ comment.user }}</a> commented <a href="{{ comment.content_object.get_absolute_url }}">{{ comment.content_object }}</a> 

टेम्पलेट्स/अधिसूचना/new_comment/full.txt

{{ comment.user }} commented on {{ comment.content_object }} 

Comment: 
{{ comment.comment }} 

Reply on: 
http://{{ site.domain }}{{ comment.content_object.get_absolute_url }} 

चेतावनी: यह हमारे उत्पादन कोड का एक बहुत ही सरल, अवांछित अनुकूलन है।

नोट: Django-1.7 पदावनत post_syncdb संकेत

यहाँ कुछ अधिक जानकारी कर रहे हैं:

+0

है कि कैसे मैं संकेत है कि कर सकते हैं उत्पन्न कर सकते हैं भेजा जाए, वह हिस्सा स्पष्ट है लेकिन विचारों के बारे में क्या है। मैं इस अधिसूचना को उस दृश्य में कैसे प्राप्त कर सकता हूं जहां मैं उपयोगकर्ता प्रोफ़ाइल प्रदर्शित करता हूं। मैं इन सभी अधिसूचनाओं को उपयोगकर्ता प्रोफ़ाइल – Sachin

+0

में प्रदर्शित करना चाहता हूं यह 'new_comment' यह अंतर्निहित django-टिप्पणियों के ढांचे के लिए काम करेगा या मुझे अपना कस्टम ढांचा होना चाहिए। मेरी टिप्पणियों के ढांचे के साथ लिंकिंग किया जा रहा है – Sachin

+1

django-अधिसूचनाएं एक महान उपयोगकर्ता प्रोफ़ाइल गतिविधि सूची नहीं बनने जा रही हैं, जैसा कि आप अधिसूचना मॉडल के स्रोत में देख सकते हैं: https://github.com/jtauber/django-notification/ब्लॉब/मास्टर/अधिसूचना/मॉडल।एक अधिसूचना का संदेश एक व्यक्ति के लिए पूर्व-प्रस्तुत किया जाना चाहिए .... इसके अलावा: new_comment django.contrib.comments के साथ काम करने के लिए है। django-सूचनाएं: ईमेल अधिसूचनाओं के लिए बहुत अच्छा है। न कुछ ज्यादा, न कुछ कम। – jpic