如何在Django Form中添加占位符属性

时间:2016-06-04 03:42:59

标签: python django forms placeholder

我在表单中添加占位符属性时遇到问题。我想添加一个占位符,使我的HTML看起来像:

<input type="text" name="sample" placeholder="sample">

现在这是我的代码看起来像。

这是我的模特:

from django.db import models

class Sample(models.Model):

    name = models.CharField("Name", max_length=120)

这是我的表格:

from django.forms import ModelForm, TextInput
from .models import Sample

class SampleForm(ModelForm):

    class Meta:
        INPUT_CLASS = 'form-control'

        model = Sample
        widgets = { 
            'name': TextInput(attrs={'class':INPUT_CLASS, 
                                     'placeholder':'Enter title here'}),
        }

浏览

def update(request):

     sampleForm = SampleForm()

     return render(request, 'sample/profile.html', 'form':sampleForm)

在我的表单中,当我包含占位符属性时,它不起作用。什么是让这项工作最好的方法?

2 个答案:

答案 0 :(得分:1)

有点晚了,但无论如何我都会筹码。我一直在尝试做同样的事情而不必重新定义表单中使用的小部件。发现以下工作:

class ExampleForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(ExampleForm, self).__init__(*args, **kwargs)

        # sets the placeholder key/value in the attrs for a widget
        # when the form is instantiated (so the widget already exists)
        self.fields['name_of_field'].widget.attrs['placeholder'] = 'random placeholder'

编辑:虽然我意识到这并不能回答你为什么你的代码不起作用的问题......

答案 1 :(得分:0)

在形式本身,这总是适用于我

class SampleForm(ModelForm):
    class Meta:
        model = Sample

    name = forms.CharField(
        label='Name', 
        widget=forms.TextInput(
            attrs={'class': 'form-control', 'placeholder': 'Enter title here'}
        )
    )