0 django django-templates django-models django-forms django-views
我创建了一个搜索功能。但是,它会搜索包含输入值的所有元素。例如,有以下元素:44564、76436、445。当我输入“445”时,它显示“44564”和“445”,但我只需要445。或者如果我输入“64”,那么什么都不应该显示,但显示“44564”和“76436”。如何修复它?
案例列表.html
<div>
<h3>Search</h3>
<form method="GET" action="{% url 'case_search' %}">
<input type="search" type="text" name="q" prequired placeholder="Put value">
<button type="submit">Find</button>
</form>
</div>
<div>
{% for case in object_list %}
<div>
<p>{{ case.name }}</p>
</div>
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
视图.py
class CaseView(ListView):
model = Case
template_name = 'case_list.html'
class CaseSearch(ListView):
template_name = 'case_list.html'
def get_queryset(self):
return Case.objects.filter(name__icontains=self.request.GET.get("q"))
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context["q"] = self.request.GET.get("q")
return context
Run Code Online (Sandbox Code Playgroud)
网址.py
path('case_list/', CaseView.as_view(), name='case_list'),
path('case_list/search/', CaseSearch.as_view(), name="case_search"),
Run Code Online (Sandbox Code Playgroud)
使用 iexact 进行精确匹配。查看文档https://docs.djangoproject.com/en/4.1/ref/models/querysets/#iexact
Case.objects.filter(name__iexact=self.request.GET.get("q"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |