Django फॉर्म तत्व <input />
के खिलाफ लिखे गए हैं क्योंकि यह HTML 4 में मौजूद है, जहां type="text"
ई-मेल पते के लिए सही विकल्प था। required="true"
भी नहीं था।
यदि आप कस्टम HTML विशेषताओं चाहते हैं, तो आपको attrs
विजेट पर कीवर्ड तर्क की आवश्यकता है। यह कुछ इस तरह दिखेगा:
email = forms.EmailField(
max_length=100,
required=True,
widget=forms.TextInput(attrs={ 'required': 'true' }),
)
आप विगेट्स here बारे में अधिक दस्तावेज़ की जाँच कर सकते हैं। attrs
की चर्चा उस पृष्ठ के निचले भाग के पास है।
type="email"
के संबंध में, आप इसे अपने attrs
शब्दकोश में भेज सकते हैं और Django बुद्धिमानी से इसके डिफ़ॉल्ट को ओवरराइड कर पाएगा। यदि आपको नतीजा नहीं मिलता है, तो आपका मार्ग forms.TextInput
को उप-वर्ग करना है और फिर इसे widget
कीवर्ड तर्क में पास करना है।
from django.forms.widgets import Widget
from django.contrib.admin.widgets import AdminFileWidget
from django.forms import HiddenInput, FileInput
old_build_attrs = Widget.build_attrs
def build_attrs(self, extra_attrs=None, **kwargs):
attrs = old_build_attrs(self, extra_attrs, **kwargs)
# if required, and it's not a file widget since those can have files
# attached without seeming filled-in to the browser, and skip hidden "mock"
# fileds created for StackedInline and TabbedInline admin stuff
if (self.is_required
and type(self) not in (AdminFileWidget, HiddenInput, FileInput)
and "__prefix__" not in attrs.get("name", "")):
attrs['required'] = 'required'
return attrs
Widget.build_attrs = build_attrs
स्रोत
2011-09-27 01:21:39
हे धन्यवाद मुझे !! –
क्या मैं सुझाव दे सकता हूं कि आप पढ़ने के लिए अगर कथन बदलते हैं: 'अगर self.is_required और टाइप (स्वयं) में नहीं है (AdminFileWidget, HiddenInput, FileInput) और "__prefix__" attrs ["name"] में नहीं:' इससे रोका जाएगा ब्राउज़र को 'आवश्यक = "सत्य जोड़ने से' 'जब किसी ऑब्जेक्ट में पहले से फ़ाइल संलग्न होती है, साथ ही स्टैक्डइनलाइन और टैबबेडइनलाइन व्यवस्थापक सामग्री के लिए बनाए गए छिपे हुए" नकली "फ़ील्ड को छोड़ दें। –