اذهب إلى المحتوى
  • 0

كيفية إضافة placeholder إلى حقل CharField في جانغو Django

Amer Abdallah

السؤال

لدي نموذج 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')

ما هي أفضل طريقة لتحقيق ذلك؟

تم التعديل في بواسطة Amer Abdallah
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكنك أن تقوم بذلك من خلال :

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'}),
        }

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إذا كنت تفضل عدم تحديد الحقل، على سبيل المثال لبعض الطرق الديناميكية، فيمكنك القيام بذلك كالتالي:

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'})

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك استخدام هذا الكود لإضافة 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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...