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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Amer Abdallah
لدي نموذج form بسيط للغاية:
يتم عرض هذا النموذج في القالب template، بالشكل التالي:
الآن أرغب في إضافة خاصية placeholder إلى هذا الحقل بقيمة "Search"حتى يظهر كود HTML بالشكل التالي:
كما أرغب في تمرير قيمة الـ placeholder إلى CharField في هذا النموذج، على النحو التالي:
ما هي أفضل طريقة لتحقيق ذلك؟
تم التعديل في بواسطة Amer Abdallahرابط هذا التعليق
شارك على الشبكات الإجتماعية
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.