我使用Django完成了一个过滤方法。过滤基于从下拉菜单和文本输入中选择的选项。过滤工作正常。现在我想在未找到搜索时显示消息。有人可以帮我解决这个问题。我会在这里发布我的代码。
def filter(request):
val3=''
if request.GET.has_key('choices'):
val2=request.GET.get('choices')
if request.GET.has_key('textField'):
val3=request.GET.get('textField')
if request.POST:
val2=request.POST.get('choices')
val3=request.POST.get('textField')
if val2=='Designation':
newData = EmployeeDetails.objects.filter(designation=val3)
flag=True
elif val2=='Name':
newData = EmployeeDetails.objects.filter(userName__icontains=val3)
flag=True
elif val2=='EmployeeID':
newData = EmployeeDetails.objects.filter(employeeID=val3)
flag=True
elif val2=='Project':
newData = EmployeeDetails.objects.filter(project=val3)
flag=True
elif val2=='DateOfJoin':
newData = EmployeeDetails.objects.filter(dateOfJoin=val3)
flag=True
else:
return HttpResponseRedirect('/employeeList/')
HTML
<h4 align="left">
{%for data in newData%}
<a STYLE="text-decoration:none" href ="http://10.1.0.90:8080/singleEmployee/{{data.id}}?choices={{val2}}&textField={{val3}}&flag=1 ">
{{ data.userName}}<br>
{%endfor%}
</h4>
答案 0 :(得分:2)
在过滤视图或html中检查新数据...如果其空显示您的信息
示例:
{% if newData %}
newData
{% else %}
error
{% endif %}
答案 1 :(得分:1)
如果标志未设置为true或者如果找不到任何内容时newData为null,那么显示消息怎么样?
{% if flag is None or flag == False or newData is None %}
<span>Error Message</span>
{% endif %}
您可能需要检查是否有必要检查标志是否为空...如果有必要,无法从您发布的代码中判断出来。
HTH
答案 2 :(得分:1)
如果您对获取/发布变量的命名方式有点'聪明',则可以大大减少视图代码。
def filter(request):
fieldname = request.GET.get('choices', None) or request.POST.get('choices')
value = request.GET.get('textField', None) or request.POST.get('textField')
if fieldname is None or value is None:
return HttpResponseRedirect('/employeeList/')
new_data = EmployeeDetails.objects.filter(**{fieldname:value})
# use new_data for your purposes here, without the flag
但是,您需要确保选项中的GET或POST变量名称与模型的字段名称完全匹配(包括大小写)。
然后在你的模板中:
<h4 align="left">
{%for data in new_data %}
<a STYLE="text-decoration:none" href ="http://10.1.0.90:8080/singleEmployee/{{data.id}}?choices={{val2}}&textField= {{val3}}&flag=1 ">
{{ data.userName}}<br>
{%endfor%}
{% if new_data is None %}
<div class='error'> No Data </div>
{% endif %}
</h4>