मैं सादे Django में किसी अन्य तरीके से की पता नहीं है। form.field
या form.as_p
तरह शॉर्टकट वास्तव में आपके लिए प्रारंभ करने, लेकिन अंत में एक सादे HTML पर वापस गिर सकती है। इस तरह मैं इसे देखता हूं। यह नहीं कहना है कि प्रतिपादन के बारे में अधिक नियंत्रण की आवश्यकता नहीं है। मुझे Django मेलिंग सूची पर this discussion about form rendering पढ़ने याद है।
सिमोन विललिसन है/एक पुस्तकालय पर काम कर रहा था डिजाइनरों अधिक नियंत्रण प्रदान करने के लिए, आप अपने स्रोत on github पा सकते हैं। यह थोड़ा बड़ा है, इसलिए यह अब भी काम नहीं कर सकता है। लेकिन आपके प्रश्न के संबंध में, यह उदाहरण ऐसा लगता है कि यह आपके लिए उपयोग किया जा सकता है:
{% field form.name class="myclass" %}
<!-- renders as -->
<input type="text" name="name" id="id_name" class="myclass">
असल में यह कार्यक्षमता हासिल करना आसान होना चाहिए। आपको एक टेम्पलेट टैग की आवश्यकता है जो एक फॉर्म फ़ील्ड स्वीकार करता है, विजेट गुणों को अपडेट करता है (जिन्हें आप पहले से फॉर्म पर सेट कर सकते हैं) और फ़ील्ड प्रस्तुत करते हैं।
एक फॉर्म पर इटरेटिंग BoundField
के उदाहरण पैदा करता है, जो स्वयं को __unicode__
विधि के साथ प्रस्तुत करता है। आपको विजेट को प्रस्तुत करने के लिए सभी कीवर्ड तर्कों को पारित करने की आवश्यकता होगी। इस विचार का एक मसौदा:
मैं एक custom template tag लिखा है::
@register.simple_tag
def field(boundfield, **kwargs):
if self.field.show_hidden_initial:
return self.as_widget(attrs=kwargs) + self.as_hidden(only_initial=True)
return self.as_widget(attrs=kwargs)
स्रोत
2011-02-10 00:20:07