django add placeholder text to form field

前端 未结 4 1002
感情败类
感情败类 2020-12-19 08:52

In Django I have the below code which is creating a username and password form on an HTML Page:

{{ form.username }} &
相关标签:
4条回答
  • 2020-12-19 09:25

    You must use the placeholder properties

    class LoginForm(forms.Form):
        username = forms.CharField(label='username')
        password = forms.CharField(label='password')
    
    
        def __init__(self, *args, **kwargs):
            super(LoginForm, self).__init__(*args, **kwargs)
            self.fields['username'].widget.attrs['placeholder'] = 'username'
            self.fields['password '].widget.attrs['placeholder'] = 'password'
    

    or

    class LoginForm(forms.Form):
        username = forms.CharField(label='username',widget=forms.TextInput(attrs={'placeholder':'username'}))
        password = forms.CharField(label='password',widget=forms.PasswordInput(attrs={'placeholder':'password'}))
    
    0 讨论(0)
  • 2020-12-19 09:37

    In case if you want to have field name as a placeholder, you can use code below:

    class LoginForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            super(LoginForm, self).__init__(*args, **kwargs)
            for k,v in self.fields.items():
                v.widget.attrs['placeholder'] = k.capitalize()
    

    Otherwise please refere to this answer.

    0 讨论(0)
  • 2020-12-19 09:39

    I hope you do have a forms.py file in your project. While creating your form, you can use following to set placeholder for your fields:

    username = forms.CharField(label='username', 
                    widget=forms.TextInput(attrs={'placeholder': 'username'}))
    

    If you have ModelForm in your project you can implement as:

     class MyForm(forms.ModelForm):
        class Meta:
            model = User
            widgets = {
                'username': forms.TextInput(attrs={'placeholder': 'username'}),
                 ..........
            }
    
    0 讨论(0)
  • 2020-12-19 09:42

    In case it might help someone, I wanted to use the help_text property of a model as the placeholder. This is the simplest way I could figure it out, based on aziminia's answer:

    class MyForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            for _, value in self.fields.items():
                value.widget.attrs['placeholder'] = value.help_text
    
        class Meta:
            model = models.MyModel
            fields = (...)
    
    0 讨论(0)
提交回复
热议问题