未找到搜索时显示消息

时间:2011-03-15 06:35:54

标签: python django django-models django-templates django-views

我使用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 个答案:

答案 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>