未找到搜索结果时显示消息

0 投票
3 回答
692 浏览
提问于 2025-04-16 13:43

我用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>

3 个回答

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>
1

如果找不到任何东西,能不能显示一个消息,告诉用户这个标志没有被设置为真,或者 newData 是空的呢?

{% if flag is None or flag == False or newData is None %}
    <span>Error Message</span>
{% endif %}

你可能还需要检查一下,看看标志是否为空也是必要的……从你发的代码里看不出来这是否必要。

希望这对你有帮助。

2

在过滤视图或HTML中检查新数据... 如果没有数据,就显示你的消息。

举个例子:

{% if newData %}
    newData
{% else %}
    error
{% endif %}
  • 你想检查的任何东西是否为空?

撰写回答