首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ListView中搜索查询精确匹配,重定向至DetailView - Django

在Django中,ListView和DetailView是两个常用的视图类,用于展示和操作数据。ListView用于展示一个对象列表,而DetailView用于展示一个对象的详细信息。

在ListView中进行搜索查询精确匹配,可以通过重写get_queryset方法来实现。get_queryset方法用于获取要展示的对象列表,我们可以在该方法中进行搜索查询的过滤。具体步骤如下:

  1. 导入ListView和DetailView类:
代码语言:txt
复制
from django.views.generic import ListView, DetailView
  1. 创建一个继承自ListView的视图类,并重写get_queryset方法:
代码语言:txt
复制
from django.db.models import Q

class MyListView(ListView):
    model = MyModel  # 替换成你的模型类
    template_name = 'my_template.html'  # 替换成你的模板文件路径

    def get_queryset(self):
        query = self.request.GET.get('query')  # 获取搜索关键字
        if query:
            return self.model.objects.filter(name=query)  # 根据name字段进行精确匹配查询
        else:
            return super().get_queryset()  # 返回默认的对象列表
  1. 在urls.py中配置该视图类的URL路由:
代码语言:txt
复制
from django.urls import path
from .views import MyListView

urlpatterns = [
    path('list/', MyListView.as_view(), name='my_list'),
]
  1. 在模板文件my_template.html中展示搜索结果:
代码语言:txt
复制
{% for object in object_list %}
    <p>{{ object }}</p>
{% empty %}
    <p>No results found.</p>
{% endfor %}

这样,当用户在浏览器中访问/list/?query=xxx时,将会显示精确匹配name字段为xxx的对象列表。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库MySQL版、腾讯云对象存储(COS)。

腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm 腾讯云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

常规情况下,对应页面要展示数据列表的视图,通过继承Djangodjango.views.generic.ListView对象来实现,页面要展示数据信息的视图,通过继承Djangodjango.views.generic.DetailView...()函数定义了数据的查询方式 问题详细信息页面和问题解决方案的结果展示页面,继承了generic.DetailView内置类,通过model指定了展示的数据的类型,template_name指定了...DetailView和ResultView的要查询的数据,同样也是通过主键编号进行查询的,默认的变量名称是pk,所以路由中要进行如下的修改配置,才可以正常使用 改造polls/urls.py路由模块...我们可以源代码,看到各种操作的一些信息,官方注释用于使用对象数据来渲染详细信息页面的视图对象,继承的父类,也定义了各种属性字段用于控制单个对象数据的展示操作 以上两个视图类,都间接继承了View...从基础文件view.py,我们可以看到,各种视图模板的基础处理操作和视图类型的封装都有了简洁的定义,我们需要做的就是项目中,继承这些Django已经封装好的对象,快捷的完成项目的开发。

90130

django 1.8 官方文档翻译: 1-2-4 编写你的第一个Django应用,第4部分

现在,让我们来创建一个 Django 视图来处理提交的数据。 记得吗? 教程 第3部分 ,我们为 polls 应用创建了一个 URLconf 配置包含有这一行代码: url(r'^(?...这个技巧不是特定于 Django 的;它是优秀的 Web 开发实践。 本例,我们 HttpResponseRedirect 的构造方法中使用了 reverse() 函数。...django.views.generic import DetailView, ListView from polls.models import Poll urlpatterns = patterns... DetailView poll 变量是自动提供的 – 因为我们使用了一个 Django 模型 (Poll) ,Django 能够为上下文变量确定适合的名称。...作为一种替代方式,你可以改变你的模板来 匹配新的默认的上下文变量 – 但它是一个非常容易地告诉 Django 使用你想要的变量的方式。

1.5K10
  • Django 1.10文文档-第一个应用Part4-表单和通用视图

    现在,创建一个Django视图来处理提交的数据,Part3已经创建了一个URLconf ,包含这一行: # polls/urls.py url(r'^(?...HttpResponseRedirect只接收一个参数:用户将要被重定向的URL; 在这个例子,HttpResponseRedirect的构造函数中使用reverse()函数。...P[0-9]+)/vote/$', views.vote, name='vote'), ] 注意在第二个和第三个模式的正则表达式匹配的模式的名字由...这里使用两个通用视图:ListViewDetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象的详细信息页面”的抽象概念。 每个通用视图需要知道它将作用于哪个模型。...快速通道 Django 1.10文文档-第一个应用Part1-请求与响应 Django 1.10文文档-第一个应用Part2-模型和管理站点 Django 1.10文文档-第一个应用

    2.4K40

    Django内置的通用类视图CBV及示例

    HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页 FormView 提交From 网站联系我们或emai...方法: get_success_url():决定在表单成功验证后重定向到的URL,默认返回success_url. form_valid(form):表单验证成功后调用该方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖该方法以上行为之间添加额外的动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充的表单数据和错误信息重新渲染上下文...from django.views.generic import TemplateView,ListView from django.utils import timezone from django.views.generic.detail...import DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.core.urlresolvers

    3.2K10

    Django内置的通用类视图及实例

    1.ListView ? 表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....,否则,将使用get_queryset().get_object()从视图的所有参数查找pk_url_kwarg参数,如果找到了这个参数,该方法使用这个参数的值执行一个基于逐渐的查询.如果这个参数没有找到...方法: get_success_url():决定在表单成功验证后重定向到的URL,默认返回success_url. form_valid(form):表单验证成功后调用该方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖该方法以上行为之间添加额外的动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充的表单数据和错误信息重新渲染上下文...,ListView from django.utils import timezone from django.views.generic.detail import DetailView from

    2.9K40

    django 1.8 官方文档翻译: 3-4-2 内建显示视图

    一些三方的应用,有更多通用视图的示例,或者你可以自己按需编写。 对象的通用视图 TemplateView确实很有用,但是当你需要 呈现你数据库的内容时Django的通用视图才真的会脱颖而出。...一个通用视图上的context_object_name属性指定了要使用的定了上下文变量: # views.py from django.views.generic import ListView from...DetailView通用视图提供了一个publisher对象给context,但是我们如何在模板添加附加信息呢?...答案是派生DetailView,并且get_context_data方法中提供你自己的实现。...如果你想要调用参数组的其它方法,你可以视图上设置pk_url_kwarg。详见 DetailView参考。

    1.4K40

    django ListView的使用 ListView获取url的参数值方式

    view.py from django.views.generic import ListView,DetailView from xxxx.models import Model_Name class...Colortag_view(ListView): #context_object_name = '如果不指定的话html页面 可以使用object_list获取' context_object_name...后的参数传入视图中,视图中先将数据通过传递的分类进行筛选,再将筛选后的数据传递到页面进行渲染。 如果我们此时还做了分页展示,则将后端处理数据时的分类值也传到页面,我们点击分页时跳转的地址?...goods = Goods.objects.all() else: goods = Goods.objects.filter(goods_type_id=type_id) # 如果有搜索条件则按照搜索条件模糊查询...ListView的使用 ListView获取url的参数值方式就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.9K20

    基于python的种子搜索网站(二)开发过程

    网站演示: https://bt.mypython.me 源码地址: https://github.com/geeeeeeeek/bt 项目开发过程 项目简介 该项目是基于python的web类库django...本人的研究方向是一项关于搜索的研究项目。该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。...网站域名为bt.mypython.me 启动项目 django-admin startproject bt 创建应用 python3 manage.py startapp app model设计 主要是对提交的链接进行设计...详情页 我们再来开发详情页,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model...return reverse('app:commit') 它是继承自CreateView,因为是创建操作嘛,post,我们通过ratelimit来限制提交次数。

    1.2K31

    基于 Django 的个人网站(4)

    queryset.filter(Q(title__icontains=keyword) | Q( abstract__icontains=keyword)) 我为了性能考虑,就不从文章内容匹配关键字了...,只从标题和摘要匹配一下,分类也不需要考虑,一篇文章对应多个分类,模糊检索本来就很耗费时间,多个分类就对应了多个模糊检索。...表单有了,视图有了,最后我们直接配置 URL, urlpatterns 列表添加一项,代码如下: path('search/', SearchView.as_view()) 现在该实现的也基本全都实现了...import DetailView, ListView from.models import Article, Category # Create your views here. class IndexView...接下来我们就尝试搜索搜索输入一个东西,看看是否可以被检索到,我在这里直接输入 2,然后点击搜索,最后搜索的结果如图所示。 ?

    1.1K20

    Python-Django 第一个Django app

    2) 当Django遇到include()时,会先把请求的url同include()函数对应的正则表达式匹配(例按先后顺序分别为:'^polls/','^admin/',如果匹配到,则把URL匹配到的字符串之后的剩余...Django会从urlpatterns list第一个正则表达式子开始匹配查找直到找到一个匹配的。 注意:正则表达匹配查找时,不搜索GET和POST参数以及域名。...HttpResponseRedirect携带单个参数:将要重定向的url。 使用reverse()函数避免view视图中写死url。...这里使用了两种视图:ListViewDetailView。这两种对象分别抽象了list对象的展示和特定读写的详细页面展示。 每种通用视图使用model属性来区分需要作用的模块。...}, ] DIRS是当加载Django模板时,需要检查的文件系统目录列表,是一个搜索路径。

    1.3K30

    django 1.8 官方文档翻译: 3-4-5 内建基于类的视图的API

    基础视图 View TemplateView RedirectView 通用的显示视图 DetailView ListView 通用的编辑视图 FormView CreateView UpdateView...基于类的视图URL 模式的部署使用as_view() 类方法: urlpatterns = [ url(r'^view/$', MyView.as_view(size=42)), ] 视图参数的线程安全性...参数必须对应于已经存在的属性(hasattr 检查可以返回True)。 基础视图 VS. 通用视图 基于类的基础视图可以认为是父视图,它们可以直接使用或者继承它们。...Django 的通用视图建立基础视图之上,用于作为经常用到的功能的快捷方式,例如显示对象的详细信息。它们提炼视图开发中常见的风格和模式并将它们抽象,这样你可以快速编写常见的视图而不用重复你自己。...大部分通常视图需要queryset 键 ,它是一个查询集 实例;关于查询集对象的更多信息,请参见执行查询。 译者:Django 文档协作翻译小组,原文:API reference。

    85320

    马哥金牌分享 | 十分钟学会用Django快速搭建一个blog

    并于2005年7月BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 Django是一个基于MVC构造的框架。...但是Django,控制器接受用户输入的部分由框架自行处理,所以Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。...install mysqlclient 5.安装mysql数据库 1.3 Django的简单配置 新建一个项目: django-admin startproject blog 项目里面新建一个app...的视图 Django有很多的优秀的视图: View DetailView ListView FormView CreateView DeleteView UpdateView 我们的blog里面暂时只用到了...ListViewDetailView 4.2 使用dajngo自带的ListView v 编写app的views.py 4.3 使用django自带的DetailView 4.4 配置app的urls.py

    2.4K51

    基于python+django的二手商品交易平台-二手商品供需系统

    项目简介该项目是基于python的web类库django开发的一套web网站,二手商品交易平台,给师弟开发的课程作业。大家在学习过程,遇到问题可以github咨询作者。...预览展示http://mask.gitapp.cn源码地址https://github.com/geeeeeeeek/mask开发步骤:启动项目django-admin startproject mask...我们一一讲解首页首先是首页,它的模版位于templates/app/index.html 它主要是用来展示首页内容, 并提交搜索词,到搜索接口,所有的接口都位于app/urls.py里面,如下app_name...它的代码非常简单:class IndexView(generic.ListView): model = Product template_name = 'app/index.html'...") return reverse('app:commit')它是继承自CreateView,因为是创建操作嘛,post,我们通过ratelimit来限制提交次数,防止恶意提交。

    51200
    领券