对于我的网站,我正在尝试设计一个搜索栏,该搜索栏将过滤某个类别的多个属性,例如名称和电话。但是,我不知道如何从python的一页中获取多个值。我做了很多尝试,但都失败了。我正在发布最新消息(这也不起作用)。我真的可以使用一些帮助。
def search(request):
errors = []
if 'q1' in request.GET:
q1 = request.GET['q1']
if 'q2' in request.GET:
q2 = request.GET['q2']
if not (q1 or q2):
errors.append('Enter a search term.')
elif ((len(q1) > 20) or (len(q2) > 20)):
errors.append('Please enter at most 20 characters.')
elif q1 and (not q2):
hotels = Hotel.objects.filter(name__icontains=q1)
return render(request, 'company/search_results.html', {'hotels': hotels, 'query': q1})
elif ((not q1) and q2):
hotels = Hotel.objects.filter(street__icontains=q2)
return render(request, 'company/search_results.html', {'hotels': hotels, 'query': q2})
else:
names = Hotel.objects.filter(name__icontains=q1)
streets = Hotel.objects.filter(street__icontains=q2)
hotels = (names and streets)
return render(request, 'company/search_results.html', {'hotels': hotels, 'query': (q1 or q2)})
return render(request, 'company/search_form.html',
{'errors': errors})
我还将发布输入内容的html代码的一部分。
<table align="center">
<tr>
<td>name:</td>
<td><input type="text" name="q1"></td>
</tr>
<tr>
<td>telephone:</td>
<td><input type="text" name="q2"></td>
</tr>
</table>
<form action="/company/search/" method="get">
<input type="submit" value="Search">
</form>
我对您的代码进行了一些更改。首先,我曾经get()
获取参数,所以您不需要在request.GET中使用if。接下来,我使用了链接QuerySet过滤器。最后,我将q1和q2都返回给模板。当您可以同时输入两者时,仅返回查询是没有意义的。
def search(request):
errors = []
q1 = request.GET.get('q1')
q2 = request.GET.get('q2')
if not (q1 or q2):
errors.append('Enter a search term.')
elif ((len(q1) > 20) or (len(q2) > 20)):
errors.append('Please enter at most 20 characters.')
else:
hotels = Hotel.objects.all()
if q1:
hotels = hotels.filter(name__icontains=q1)
if q2:
hotels = hotels.filter(street__icontains=q2)
return render(request, 'company/search_results.html', {'hotels': hotels, 'q1': q1, 'q2': q2, 'errors': errors})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句