2010-03-06 11 views
14

मैं टिप्पणियों के ढांचे के बारे में django दस्तावेज़ों पर पढ़ रहा हूं और इसे कैसे अनुकूलित करना है (http://docs.djangoproject.com/en/1.1/ref/contrib/comments/custom/) उस पृष्ठ में, यह दिखाता है कि नए फ़ील्ड को फ़ॉर्म में कैसे जोड़ें। लेकिन मुझे क्या करना चाहते हैं अनावश्यक क्षेत्रों निकालने के लिए URL जैसे ईमेल, है (अन्य छोटे mods के बीच।)अनावश्यक क्षेत्रों को हटाकर टिप्पणियों के ढांचे (डीजेंगो) का विस्तार कैसे करें?

कि समान दस्तावेज़ पृष्ठ पर यह कहते हैं जाने का रास्ता BaseCommentAbstractModel से अपने कस्टम टिप्पणियां वर्ग का विस्तार करने के लिए है, लेकिन यह काफी है, मैं अब तक आया हूं और अब मुझे नुकसान हुआ है। मुझे इस विशिष्ट पहलू पर कुछ भी नहीं मिला।

+0

आपको उन्हें हटाने की आवश्यकता क्यों है? यदि आप उन्हें बाहर ले जाते हैं, तो क्या आपको किसी भी प्लग-इन ऐप के साथ समस्या नहीं होगी जो टिप्पणी ढांचे का उपयोग करती है? वे वास्तव में कोई नुकसान नहीं कर रहे हैं और डिस्क उपभोग की मात्रा नगण्य है। – Tom

+1

मेरा मतलब यह नहीं है कि उन्हें हटाएं जैसे मैं जाना चाहता हूं और टिप्पणियां कोड हैक करना चाहता हूं। मैं बस उन्हें इस विशिष्ट ऐप में छोड़ना चाहता हूं। अस्वीकरण: मुझे आशा है कि सीएसएस के साथ छिपाने से एक अच्छा तरीका है और उन क्षेत्रों को दृश्यों के पीछे एक शून्य मान असाइन करें, इसलिए उस उत्तर को पोस्ट करने से बचें, जब तक कि यह मुझे न कहें कि यह करने का एकमात्र तरीका है। :) – Nacho

उत्तर

12

मैंने हाल ही में इस समाधान को लागू किया है कि ऑफरी ने उल्लेख किया है, क्योंकि मैं केवल एक टिप्पणी के लिए एकमात्र "टिप्पणी" फ़ील्ड स्वीकार करना चाहता था (जैसे एसओ, कोई "नाम", नहीं "ईमेल" और कोई "यूआरएल")।

डिफ़ॉल्ट टिप्पणी फ़ॉर्म और सूची डिस्प्ले को कस्टमाइज़ करने के लिए, मैंने अपनी रूट "टेम्पलेट्स" निर्देशिका में "टिप्पणियां" निर्देशिका बनाई और दो डिफ़ॉल्ट टिप्पणी टेम्पलेट्स को ओवरराइड किया।

मेरे "/templates/comments/form.html" है:

{% load comments i18n %} 
{% if user.is_authenticated %} 
    <form action="{% comment_form_target %}" method="post"> 
     {% csrf_token %} 
     {% if next %}<input type="hidden" name="next" value="{{ next }}" />{% endif %} 
     {% for field in form %} 
      {% if field.is_hidden %} 
       {{ field }} 
      {% else %} 
       {% if field.name != "name" and field.name != "email" and field.name != "url" %} 
        {% if field.errors %}{{ field.errors }}{% endif %} 
        <p {% if field.errors %} class="error"{% endif %} {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}> 
        {{ field }} 
        </p> 
       {% endif %} 
      {% endif %} 
     {% endfor %} 
     <input type="submit" name="post" class="submit-post" value="{% trans "Add Comment" %}" /> 
    </form> 
{% else %} 
    I'm sorry, but you must be <a href="javascript:alert('send to login page')">logged in</a> to submit comments. 
{% endif %} 

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

मेरे "/templates/comments/list.html" है:

<div class="comment_start"></div> 
{% for comment in comment_list %} 
    <div class="comment"> 
     {{ comment.comment }} 
     (from <a href="javascript:alert('show user profile/stats')">{{ comment.user }}</a> - {{ comment.submit_date|timesince }} ago) 
    </div> 
{% endfor %} 

पेज मैं रूप चाहते हैं, मैं पहली बार {% load comments %}{% render_comment_list for [object] %} फोन और फिर {% render_comment_form for [object] %} फ़ॉर्म को दिखाने के लिए, या एक उत्पन्न करने के लिए ऑब्जेक्ट पर टिप्पणियों की सूची ([ऑब्जेक्ट] को अपने उचित ऑब्जेक्ट नाम से बदलें)।

यह मेरे लिए महान काम कर रहा है, और अब भी मुझे अन्य सभी "मुक्त" सामान है कि Django टिप्पणी के साथ आता है दे रही है (संयम, पर चिह्नित करने, फ़ीड, बहुरूपी संघों, आदि ...)

+1

यह थोड़ी देर हो गया है, लेकिन यह वही है जो मुझे तब चाहिए था। धन्यवाद! – Nacho

+0

आप अपने कस्टम टेम्पलेट्स का उपयोग करने के लिए टिप्पणियां ऐप कैसे बताते हैं? – john2x

+0

बस अपने टेम्पलेट निर्देशिका में "टिप्पणियां" नामक निर्देशिका में "form.html" और "list.html" नामक अपने स्वयं के टेम्पलेट्स डालें। – mitchf

2

आप overriding the comment form with a custom template को आजमा सकते हैं जो केवल आपके इच्छित फ़ील्ड दिखाता है।

+0

ऑफ़री, यदि आप इस प्रश्न पर मेरी टिप्पणी पढ़ते हैं, तो आप देखेंगे कि यह कुछ ऐसा है जो मैं कम से कम आदर्श रूप से टालना चाहता हूं। फिर भी धन्यवाद। – Nacho

+0

मैंने आपकी टिप्पणी पढ़ी है, और मैं सुझाव नहीं दे रहा हूं कि आप सीएसएस के साथ फ़ील्ड छुपाएं।आप अपने टेम्पलेट में फ़ील्ड प्रस्तुत नहीं करेंगे, और इस प्रकार वे कभी मौजूद नहीं होंगे। यह एक साफ समाधान है, और जहां तक ​​मुझे पता है, हर कोई इसका उपयोग करता है। यदि आप चाहें तो एक नया पहिया आविष्कार करने के लिए आपका स्वागत है। –

+0

मेरा बुरा! तो, जवाब पूरे समय हो सकता है। तो, अगर मैं सिर्फ इस फ़ील्ड को प्रस्तुत नहीं करता हूं तो उन्हें केवल आवश्यकता नहीं होगी और ढांचा उन्हें अनदेखा कर देगा? – Nacho

4

का एक साफ सारांश कैसे बल्कि एक रूप/अन्य गन्दा हैक्स में तत्वों छुपा से वास्तविक टिप्पणियां ढांचे उपवर्गीकरण दृष्टिकोण के माध्यम से सुंदर ढंग से ऐसा करने के लिए,,, Django Comments: Want to remove user URL, not expand the model. How to?

पाया जा सकता है अनिवार्य रूप से, आप CommentForm उपवर्ग, और उसके get_comment_create_data (स्वयं) पद्धति को बदलने, और उसके बाद उन गुणों को पॉप आउट करें जिन्हें आप नहीं चाहते हैं (जैसे ईमेल, यूआरएल, इत्यादि)

जे

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