Amer Abdallah نشر 14 سبتمبر 2021 أرسل تقرير نشر 14 سبتمبر 2021 (معدل) لدي نموذج form بسيط للغاية: class SearchForm(Form): query = forms.CharField(label='search') يتم عرض هذا النموذج في القالب template، بالشكل التالي: <input type="text" name="query" id="id_query" /> الآن أرغب في إضافة خاصية placeholder إلى هذا الحقل بقيمة "Search"حتى يظهر كود HTML بالشكل التالي: <input type="text" name="query" id="id_query" placeholder="Search" /> كما أرغب في تمرير قيمة الـ placeholder إلى CharField في هذا النموذج، على النحو التالي: query = forms.CharField(label='search', placeholder='Search') ما هي أفضل طريقة لتحقيق ذلك؟ تم التعديل في 14 سبتمبر 2021 بواسطة Amer Abdallah 2 اقتباس
1 سامح أشرف نشر 14 سبتمبر 2021 أرسل تقرير نشر 14 سبتمبر 2021 يمكنك أن تقوم بذلك من خلال : query = forms.CharField(label = 'search', widget = forms.TextInput(attrs = {'placeholder': 'Search'})) حيث تقبل widget كائن من نوع TextInput والذي بدوره يمكنك من الحصول على قيمة أي خاصية مثل placeholder على سبيل المثال. والطريقة الأخرى لعمل نفس الشيء هي إستخدام صنف Meta، كالتالي: from django import forms from .models import SearchModel class SearchForm(forms.ModelForm): class Meta: model = SearchModel widgets = { 'name': forms.TextInput(attrs={'placeholder': 'Search'}), } 3 اقتباس
0 Ali Haidar Ahmad نشر 14 سبتمبر 2021 أرسل تقرير نشر 14 سبتمبر 2021 إذا كنت تفضل عدم تحديد الحقل، على سبيل المثال لبعض الطرق الديناميكية، فيمكنك القيام بذلك كالتالي: def __init__(self, *args, **kwargs): super(MyForm, self).__init__(*args, **kwargs) self.fields['email'].widget.attrs['placeholder'] = self.fields['email'].label or 'email@address.nl' حل آخر من خلال تخصيص ال widget الافتراضي. إذا كنت تستخدم نفس ال widget الذي يستخدمه الحقل عادةً، فيمكنك ببساطة تخصيص ذلك بدلاً من إنشاء مثيل جديد: class sf(forms.Form): q = forms.CharField(label='Search') def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['q'].widget.attrs.update({'placeholder': 'Search'}) 1 اقتباس
0 محمد أبو عواد نشر 15 سبتمبر 2021 أرسل تقرير نشر 15 سبتمبر 2021 يمكنك استخدام هذا الكود لإضافة placeholder لكل حقل TextInput في النموذج الخاص بك. سيتم أخذ نص placeholder من تسميات الحقول الخاصة بالنموذج الخاص بك class PlaceholderDemoForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(PlaceholderDemoForm, self).__init__(*args, **kwargs) for field_name in self.fields: field = self.fields.get(field_name) if field: if type(field.widget) in (forms.TextInput, forms.DateInput): field.widget = forms.TextInput(attrs={'placeholder': field.label}) class Meta: model = DemoModel 1 اقتباس
السؤال
Amer Abdallah
لدي نموذج form بسيط للغاية:
يتم عرض هذا النموذج في القالب template، بالشكل التالي:
الآن أرغب في إضافة خاصية placeholder إلى هذا الحقل بقيمة "Search"حتى يظهر كود HTML بالشكل التالي:
كما أرغب في تمرير قيمة الـ placeholder إلى CharField في هذا النموذج، على النحو التالي:
ما هي أفضل طريقة لتحقيق ذلك؟
تم التعديل في بواسطة Amer Abdallah3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.