使用 django-filter 时在 Django 中向表单添加占位符
Adding placeholder to form in Django when using django-filter
我正在开发一个 Web 应用程序,它使用 django-tables2 显示 html table 并允许使用 django-filter 过滤此 table。
在我的 html 模板中,我可以简单地输入 {% filter.form %}
,然后我得到了一个完整的表格来过滤我的 table,我认为这非常简单。
但是,我想在平面 html(使用 Bootstrap4)中向此表单添加占位符,如下所示:
<div class="container">
<form>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email"
placeholder="ENTER PLACEHOLDER HERE" name="email">
</div>
</form>
</div>
(此处形成的示例:https://www.w3schools.com/bootstrap4/tryit.asp?filename=trybs_form_basic&stacked=h 并进行了编辑)
如何在使用 django-filters 时添加占位符,而我所做的只是将 % filter.form %}
添加到我的模板?
编辑:
我的问题只完成了一半。 @schwobaseggl 给出的答案适用于大多数过滤器。但是,当出现 RangeFilter
和两个字段(一个用于最大值,一个用于最小值)时,如何设置两个 separate 占位符?可以将 same 占位符放入两个字段中,如下所述:。
当您定义 Filter
时,通过 widget
构造函数的 attrs
kwarg 提供 placeholder
属性:
# ...
from django.forms.widgets import TextInput, ...
class FooFilter(filters.FilterSet):
bar = filters.CharFilter(..., widget=TextInput(attrs={'placeholder': 'baz'}))
from django.forms.widgets import TextInput
class BikesFilter(django_filters.FilterSet):
sell_price = django_filters.NumberFilter()
sell_price__gt = django_filters.NumberFilter(field_name='sell_price', lookup_expr
='gte', label='sell price min', widget=TextInput(attrs={'placeholder': 'min'}))
sell_price__lt = django_filters.NumberFilter(field_name='sell_price', lookup_expr
= 'lte', label='sell price max', widget=TextInput(attrs={'placeholder': 'max'}))
class Meta:
model = Bike
fields = (
'sell_price'
)
我正在开发一个 Web 应用程序,它使用 django-tables2 显示 html table 并允许使用 django-filter 过滤此 table。
在我的 html 模板中,我可以简单地输入 {% filter.form %}
,然后我得到了一个完整的表格来过滤我的 table,我认为这非常简单。
但是,我想在平面 html(使用 Bootstrap4)中向此表单添加占位符,如下所示:
<div class="container">
<form>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email"
placeholder="ENTER PLACEHOLDER HERE" name="email">
</div>
</form>
</div>
(此处形成的示例:https://www.w3schools.com/bootstrap4/tryit.asp?filename=trybs_form_basic&stacked=h 并进行了编辑)
如何在使用 django-filters 时添加占位符,而我所做的只是将 % filter.form %}
添加到我的模板?
编辑:
我的问题只完成了一半。 @schwobaseggl 给出的答案适用于大多数过滤器。但是,当出现 RangeFilter
和两个字段(一个用于最大值,一个用于最小值)时,如何设置两个 separate 占位符?可以将 same 占位符放入两个字段中,如下所述:
当您定义 Filter
时,通过 widget
构造函数的 attrs
kwarg 提供 placeholder
属性:
# ...
from django.forms.widgets import TextInput, ...
class FooFilter(filters.FilterSet):
bar = filters.CharFilter(..., widget=TextInput(attrs={'placeholder': 'baz'}))
from django.forms.widgets import TextInput
class BikesFilter(django_filters.FilterSet):
sell_price = django_filters.NumberFilter()
sell_price__gt = django_filters.NumberFilter(field_name='sell_price', lookup_expr
='gte', label='sell price min', widget=TextInput(attrs={'placeholder': 'min'}))
sell_price__lt = django_filters.NumberFilter(field_name='sell_price', lookup_expr
= 'lte', label='sell price max', widget=TextInput(attrs={'placeholder': 'max'}))
class Meta:
model = Bike
fields = (
'sell_price'
)