2010-10-05 20 views
8

मैं टेम्पलेट से मॉडल में एक विधि कॉल करने का प्रयास कर रहा हूं और मैं इस निष्कर्ष पर पहुंचा हूं कि यह नहीं किया जा सकता है।किसी टेम्पलेट से मॉडल पर एक विधि को कॉल करना

यह मेरा कोड

{% if request.user.is_authenticated %} 
    {% if a_story.is_story_liked(request.user.id) %} 
    <a class="story_like" data-id="{{ a_story.id }}" href="#">Like</a> 
    {% endif %} 
    {% else %} 
    <a class="story_like_login" data-id="{{ a_story.id }}" href="#">Like</a> 
{% endif %} 

दूसरी पंक्ति पर त्रुटि होता है। "is_story_liked" जांचता है कि क्या उपयोगकर्ता ने एक कहानी पसंद की है या नहीं। यदि नहीं, तो मैं एक ही एंकर टैग लिखूंगा लेकिन एक अलग वर्ग के साथ।

मैं थोड़ी सी इस तरह से फंस गया हूं। मैं अलग-अलग वर्ग नामों को आउटपुट करने का प्रयास कर रहा हूं: यदि उपयोगकर्ता लॉग इन है, यदि उपयोगकर्ता लॉग इन नहीं है और यदि उपयोगकर्ता को एक लेख/कहानी "पसंद" या पसंद नहीं है।

उत्तर

21

डीजेंगो टेम्पलेट्स में विधि कॉल केवल तभी काम करती है जब उनके पास कोई तर्क न हो (उदाहरण के लिए {% if request.user.is_authenticated %})। आपको या तो उस कार्यक्षमता को उस दृश्य में डालने की आवश्यकता होगी जो इस टेम्पलेट को प्रस्तुत करता है या इस कार्यक्षमता को custom template tag में डाल देता है।

+0

संकेत के लिए धन्यवाद ... टेम्पलेट टैग इस परिदृश्य में बहुत अच्छा काम करते हैं। – iJK

+0

user.is_authenticated वास्तव में एक विशेषता है और एक विधि नहीं है। https://docs.djangoproject.com/en/2.0/ref/contrib/auth/#django.contrib.auth.models.User.is_authenticated – makerGeek

संबंधित मुद्दे