m0_74879466 2024-04-28 18:31 采纳率: 73.4%
浏览 4
已结题

django不用orm搜索数据库没有的内容怎么跳转“没有此内容”的页面

django不用orm搜索数据库没有的内容怎么跳转“没有此内容”的页面

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-04-28 18:31
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题解答:
    1. 首先在views.py中定义一个搜索函数,接收前端传来的关键字,调用Django提供的数据库查询接口进行搜索:
    from django.db.models import Q
    from django.shortcuts import render
    from app_name.models import ModelName  #导入需要查询的模型
    def search(request):
        keyword = request.GET.get('keyword')
        results = ModelName.objects.filter(Q(field__icontains=keyword))   #这里以单个字段为例子
        if not results:
            return render(request, 'no_result.html')  #若无结果,则跳转no_result.html页面
        return render(request, 'result.html', {'results':results})
    
    1. 在template文件夹中新建no_result.html和result.html两个html文件,用来展示搜索结果或者无搜索结果页面。 no_result.html的示例代码:
    {% extends 'base.html' %}
    {% block content %}
      <h1>没有搜索到该内容</h1>
    {% endblock %}
    

    result.html的示例代码:

    {% extends 'base.html' %}
    {% block content %}
      <h1>搜索结果展示</h1>
      {% for result in results %}
        <p>{{ result.field }}</p>
      {% empty %}
        <p>没有搜索到该内容</p>
      {% endfor %}
    {% endblock %}
    
    1. 在urls.py中定义搜索页面的路由,并将route指向上一步中定义的搜索函数,如下:
    from django.urls import path
    from app_name.views import search  #导入上一步中定义的搜索函数
    urlpatterns = [
        path('search/', search, name='search'),
    ]
    
    1. 在前端页面中定义搜索表单,用来接收用户输入的关键字并提交搜索请求,如下:
    <form action="{% url 'search' %}" method="GET">
        <input type="text" name="keyword" />
        <button type="submit">搜索</button>
    </form>
    

    注意:需要在form标签中action属性里指向urls.py中定义的搜索路由。 综上所述,以上就是用Django如何实现搜索唯一记录没有此内容的跳转页面,具体实现方法可能因需求或场景略有不同。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 4月28日