2010-01-09 20 views
21

में त्रुटियों की एक सूची प्राप्त करना मैं Django में एक फॉर्म बनाने की कोशिश कर रहा हूं। यह काम करता है और सब कुछ, लेकिन मैं सभी त्रुटियों को फॉर्म के शीर्ष पर होना चाहता हूं, प्रत्येक फ़ील्ड के आगे त्रुटि नहीं है। मैंने form.errors पर लूपिंग करने का प्रयास किया, लेकिन यह केवल उस फ़ील्ड का नाम दिखाया गया जिसमें त्रुटि थी, त्रुटि नाम नहीं जैसे "नाम आवश्यक है।"Django फॉर्म

यह काफी मैं प्रारूप में सबसे ऊपर उपयोग करने में सक्षम होना चाहते हैं क्या है:

{% if form.??? %} 
    <ul class="errorlist"> 
    {% for error in form.??? %} 
     <li>{{ error }}</li> 
    {% endfor %} 
    </ul> 
{% endif %} 

मैं वहाँ ??? के लिए क्या प्रयोग करेंगे? यह errors नहीं है; जो सिर्फ फ़ील्ड के नाम आउटपुट करता है।

उत्तर

43

form.errors एक शब्दकोश है। जब आप {% for error in form.errors %} त्रुटि कुंजी से मेल खाते हैं।

इसके बजाय

{% for field, errors in form.errors.items %} 
    {% for error in errors %} 
... 

आदि

+0

ऐसा करने पर, यह चार वस्तुओं के साथ एक सूची आउटपुट करता है, प्रत्येक में एक वर्ण होता है: "एस", "ए", "ए", और "एम"। मैं जिस विशिष्ट रूप का उपयोग कर रहा हूं वह डीजेंगो-पंजीकरण में पंजीकरण फॉर्म है। – icktoofay

+0

इसे थोड़ा सा डिबग करने के बाद, "एस", "ए", "ए", और "एम" फ़ील्ड के नाम का दूसरा अक्षर हैं। यह कुछ हद तक अजीब है, लेकिन मैं आपके उत्तर को उत्तर के रूप में चिह्नित करूंगा, क्योंकि मुझे लगता है कि मैं इसे यहां से समझने में सक्षम हूं। – icktoofay

+6

शायद शब्दकोश पर .items() को कॉल करने की आवश्यकता है, जो कि (कुंजी, मान) के tuples का अनुक्रम देता है जो आपके (फ़ील्ड, त्रुटियों) में अनपैक होगा। –

2

कोशिश आप कुछ एक शर्त के साथ सरल इस तरह से ले चाहते हैं:

{% if form.errors %} 
    <ul> 
    {% for error in form.errors %} 
     <li>{{ error }}</li> 
    {% endfor %} 
    </ul> 
{% endif %} 

आप अधिक जानकारी चाहते हैं और नाम और त्रुटि देखते हैं क्षेत्र का, यह करें:

{% if form.errors %} 
    <ul> 
    {% for key,value in form.errors.items %} 
     <li>{{ key|escape }} : {{ value|escape }}</li> 
    {% endfor %} 
    </ul> 
{% endif %} 

यदि आप form.errors समझना चाहते हैं तो एक बड़ा शब्दकोश है।

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