我试图做一个基本的搜索功能,但我有一个小问题。当我转到包含搜索表单的模板时,它会在我尝试搜索之前显示所有项目。有没有一种方法可以显示一个空白的模板,直到用户输入一个搜索词并点击搜索按钮?你知道吗
示例:
[搜索字段][按钮]
1
2
3
等等
你知道吗视图.py你知道吗
def view_player_home(request):
if request.method == 'GET':
form = searchPlayerForm(request.GET)
if form.is_valid():
string = form.cleaned_data.get('text')
players = Player.objects.filter(Q(first_name__icontains = string)|Q(last_name__icontains = string))
return render_to_response('player/player.html', {'form': form, 'players':players}, context_instance=RequestContext(request))
else:
form = searchPlayerForm()
return render_to_response('player/player.html', {'form': form}, context_instance=RequestContext(request))
你知道吗表单.py你知道吗
class searchPlayerForm(forms.Form):
text = forms.CharField(label = "Search")
def __init__(self, *args, **kwargs):
super(searchPlayerForm, self).__init__(*args, **kwargs)
self.fields['text'].required = False
模板
{% extends "base.html" %}
{% block content %}
<h5>Find Player</h5>
<form method="GET" action="">
{% csrf_token %}
{{ form.as_table }}
<input type="submit" value="Submit"/>
</form>
{% if players %}
{% for p in players %}
{{ p.first_name }} {{ p.last_name }}
{% endfor %}
{% else %}
No Players
{% endif %}
{% endblock %}
另一个选择是在GET data中显式地查找一个术语
甚至不允许空白
如果您只有一个字段,或者正在检查表单中的选项是否具有特定值,则此操作很容易完成。你知道吗
在处理很多字段时,我喜欢执行一个命名的submit按钮,这样我就可以检查它是否被点击,然后执行if语句检查按钮名称。你知道吗
一个改变就能做到:
应该是
根本的问题是您的请求方法总是GET,因此您永远不会进入else块或函数的底部。你知道吗
相关问题 更多 >
编程相关推荐