如何在进行搜索后使文本保持不变

  • 本文关键字:文本 搜索 django
  • 更新时间 :
  • 英文 :


我的页面上有一个serch字段

<form method="GET" class="container mb-5">
<input type="search" class="form-control rounded" placeholder="Write a name" aria-label="Search"
aria-describedby="search-addon" name="search"/>
<button type="submit" class="btn btn-outline-primary px-5" >Search</button>
</form>

以下是我的观点

def my_view(request):
value_one = request.GET.get("search", None)
objects = MyModel.objects.all()
if value_one:
objects = objects.filter(field_one=value_one)

在我在搜索字段中输入内容并按下"搜索"按钮后,搜索字段中的文本消失,我希望它一直保留到下一次输入。Django有可能吗?甚至不知道如何在谷歌上搜索,我发现的一切都在不同的主题上

在您的模板上为您的输入添加值:

<form method="GET" class="container mb-5">
<input type="search" class="form-control rounded" placeholder="Write a name" aria-label="Search" value="{{value_one"}}
aria-describedby="search-addon" name="search"/>
<button type="submit" class="btn btn-outline-primary px-5" >Search</button>
</form>

在你看来,将这个价值添加到你的上下文中:

def my_view(request):
value_one = request.GET.get("search", None)
objects = MyModel.objects.all()
if value_one:
objects = objects.filter(field_one=value_one)
return render(request,'template.html',{'value_one':value_one,'objects':objects})

你听说过django的Form类吗?您应该使用Form类在Django中创建表单,这将允许您在";提交";调用以及处理错误。为您提供的一些示例代码片段:

forms.py

from django import forms
class SearchForm(forms.Form):
search = forms.CharField(label="Search Query", widget=forms.TextInput(attrs={"class": "form-control rounded", "placeholder": "Write a name", "aria-label": "Search", "aria-describedby": "search-addon"}))

views.py

from django.shortcuts import render
from .forms import SearchForm

def my_view(request):
form = SearchForm({"search": request.GET.get("search", None)})
if form.is_valid():
search_query = form.cleaned_data.get("search")
if search_query:
objects = MyModel.objects.filter(field_one=search_query).all()

# ...snip...
return render(request, 'searchform.html', {"form": form})

searchform.html

<form action="{% url 'my_view' %}" method="get">
{{ form }}
<input type="submit" value="Submit" class="btn btn-outline-primary px-5">
</form>

最新更新