Django:如果给定条件,则不处理信息
Django: the information is not processed for a given condition if
模板标记 {% if %} {% endif %} 无法正常工作。我需要让页面上的搜索结果只出现在搜索查询之后。但由于某种原因,当页面加载时,所有现有内容都会立即出现。但是在获取请求过滤器后工作正常。
views.py
def search(request):
place_list = Places.objects.all()
place_filter = PlaceFilter(request.GET, queryset=place_list)
return render(request, 'search/user_list.html', {'filter': place_filter})
html
{% if filter.qs %}
<div class="row">
{% for obj in filter.qs %}
<div class="col-md-3 admin__block">
<div class="cover__wrapper">
<img src="{{ obj.main_photo.url }}" alt="">
<a href="#"><span>#</span>{{ obj.name }}</a>
<p>{{ obj.description }}</p>
</div>
</div>
{% endfor %}
</div>
{% endif %}
filters.py
class PlaceFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='icontains', widget=forms.TextInput(attrs={
'placeholder': 'Search place', 'class': 'input__search'}))
class Meta:
model = Places
fields = ['name']
FilterSet
的 qs
属性 returns 过滤器集的 queryset
。所以总是True
。
您可以在模板中使用 request.GET
来检查 GET
是否包含任何请求数据并仅呈现过滤后的数据:
{% if request.GET %}
<div class="row">
{% for obj in filter.qs %}
<div class="col-md-3 admin__block">
<div class="cover__wrapper">
<img src="{{ obj.main_photo.url }}" alt="">
<a href="#"><span>#</span>{{ obj.name }}</a>
<p>{{ obj.description }}</p>
</div>
</div>
{% endfor %}
</div>
{% endif %}
模板标记 {% if %} {% endif %} 无法正常工作。我需要让页面上的搜索结果只出现在搜索查询之后。但由于某种原因,当页面加载时,所有现有内容都会立即出现。但是在获取请求过滤器后工作正常。
views.py
def search(request):
place_list = Places.objects.all()
place_filter = PlaceFilter(request.GET, queryset=place_list)
return render(request, 'search/user_list.html', {'filter': place_filter})
html
{% if filter.qs %}
<div class="row">
{% for obj in filter.qs %}
<div class="col-md-3 admin__block">
<div class="cover__wrapper">
<img src="{{ obj.main_photo.url }}" alt="">
<a href="#"><span>#</span>{{ obj.name }}</a>
<p>{{ obj.description }}</p>
</div>
</div>
{% endfor %}
</div>
{% endif %}
filters.py
class PlaceFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='icontains', widget=forms.TextInput(attrs={
'placeholder': 'Search place', 'class': 'input__search'}))
class Meta:
model = Places
fields = ['name']
FilterSet
的 qs
属性 returns 过滤器集的 queryset
。所以总是True
。
您可以在模板中使用 request.GET
来检查 GET
是否包含任何请求数据并仅呈现过滤后的数据:
{% if request.GET %}
<div class="row">
{% for obj in filter.qs %}
<div class="col-md-3 admin__block">
<div class="cover__wrapper">
<img src="{{ obj.main_photo.url }}" alt="">
<a href="#"><span>#</span>{{ obj.name }}</a>
<p>{{ obj.description }}</p>
</div>
</div>
{% endfor %}
</div>
{% endif %}