django博客项目实现站内搜索功能
Django博客站内搜索功能实现
1. 准备工作
确保Django项目已经创建好,并且有一个用于存储博客文章的模型(例如Post)。
2. 定义搜索表单
在应用目录下创建一个forms.py文件,定义一个搜索表单。
from django import formsclass SearchForm(forms.Form):query = forms.CharField(label='搜索', max_length=100)
3. 创建视图
在views.py文件中,添加一个视图来处理搜索请求。
from django.shortcuts import render
from .models import Post
from .forms import SearchFormdef search(request):form = SearchForm(request.GET)if 'query' in request.GET and form.is_valid():query = form.cleaned_data['query']results = Post.objects.filter(title__icontains=query) | Post.objects.filter(content__icontains=query)else:results = Post.objects.none()context = {'form': form,'results': results,}return render(request, 'search.html', context)
4. 配置URL
在应用的urls.py文件中,添加一个URL规则来指向搜索视图。
from django.urls import path
from .views import searchurlpatterns = [path('search/', search, name='search'),
]
5. 创建搜索模板
在应用的模板目录下,创建一个search.html文件,用于显示搜索表单和结果。
<!-- search.html -->
{% extends 'base.html' %}{% block content %}<h2>站内搜索</h2><form method="get" action="{% url 'search' %}">{{ form.as_p }}<button type="submit">搜索</button></form>{% if results %}<h3>搜索结果</h3><ul>{% for post in results %}<li><h4><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h4><p>{{ post.content|truncatewords:30 }}</p></li>{% endfor %}</ul>{% else %}<p>没有找到相关文章。</p>{% endif %}
{% endblock %}
6. 优化搜索
- 索引:为了提高搜索效率,可以考虑为
Post模型的title和content字段添加数据库索引。 - 全文搜索:Django的
Q对象支持复杂查询,但对于全文搜索,可能需要使用额外的库,如django-haystack或Django自带的SearchVector。 - 分页:如果搜索结果很多,考虑使用
django.core.paginator来实现分页。
7. 测试
启动你的Django项目并访问/search/路径,你应该能够看到一个搜索表单,输入关键词后,页面会显示匹配的博客文章。
相关文章:
django博客项目实现站内搜索功能
Django博客站内搜索功能实现 1. 准备工作 确保Django项目已经创建好,并且有一个用于存储博客文章的模型(例如Post)。 2. 定义搜索表单 在应用目录下创建一个forms.py文件,定义一个搜索表单。 from django import formsclass …...
蓝桥杯c++算法学习【1】之枚举与模拟(卡片、回文日期、赢球票、既约分数:::非常典型的比刷例题!!!)
别忘了请点个赞收藏关注支持一下博主喵!!! 关注博主,更多蓝桥杯nice题目静待更新:) 枚举与模拟 一、卡片: 【问题描述】 小蓝有很多数字卡片,每张卡片上都是一个数字(0到9)。 小蓝…...
Android 延时操作的常用方法
一、简介 在Android开发中我们可能会有延时执行某个操作的需求,例如我们启动应用的时候,一开始呈现的是引导页面,3秒后进入主界面,这就是一个延时操作。还有一种是执行某些接口任务时,需要有超时机制。下面介绍常用的…...
AI驱动的轻量级笔记应用Blinko
什么是 Blinko ? Blinko 是一个创新的开源项目,专为想要快速捕捉和整理瞬间想法的个人而设计。Blinko 允许用户在灵感迸发的瞬间无缝记录想法,确保不会错过任何创意火花。 Blinko 的设计初衷是让笔记记录变得更简单,让用户专注于内…...
一文搞懂 UML 类图
面向对象设计 主要就是使用UML的类图,类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据 一、UML类图简介 统一建模语言 UML …...
Zabbix 7 最新版本安装 Rocky Linux 8
前言 本实验主要在Rocky Linux 中安装Zabbix,其他centos8、Debian、Ubuntu、Alma Linux都可以安装,就是在中间件有点不同。Nginx就要配置一下,官网给的教程也算是很规范的,就是在MySQL上要自己安装,他没有告诉我们&am…...
使用HTML、CSS和JavaScript创建动态雪人和雪花效果
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏:…...
redis bind 127.0.0.1和bind 10.34.56.78的区别
绑定到 127.0.0.1,默认情况下,Redis 只会接受来自本地主机的连接。其他地址的则无法成功连接。如果绑定到主机的IP地址,则是可以被其他主机连接的。 可以通过iptables规则,进一步限制对redis的访问。 1、允许本地回环接口链接 …...
基于点云的 3D 目标检测模型 PointPillars 部署 tensorRT
PointPillars 3D 目标检测模型部署 tensorRT 一直想折腾一下基于点云的目标检测模型,但由于没有实际项目或工作需要,搞也搞的不够深入,把开源的模型跑一下似乎好像做过又好像没有做过。内心一直想搞一下,选定了 PointPillars 这个…...
centos查看硬盘资源使用情况命令大全
在 CentOS 系统中,你可以使用几个命令来查看硬盘的资源和使用情况。以下是一些常用的命令: 1. df 命令 df (disk free) 用于显示文件系统的磁盘空间占用情况。 df -h-h 参数表示以人类可读的格式(如 GB, MB)显示。输出会显示每…...
Solon MVC 的 @Mapping 用法说明
在 Solon Mvc 里,Mapping 注解一般是配合 Controller 和 Remoting,作请求路径映射用的。且,只支持加在 public 函数 或 类上。 1、注解属性 属性说明备注value路径与 path 互为别名path路径与 value 互为别名method请求方式限定(defall)可用…...
uni-app表单⑪
文章目录 十七、用户登录-登录界面搭建一、结构样式代码编写 十八、用户登录-表单验证一、userRulesMixin 文件使用二、验证规则编写 十七、用户登录-登录界面搭建 一、结构样式代码编写 uni-forms 插件下载 下载地址:https://ext.dcloud.net.cn/plugin?id2773 s…...
PyQt5 加载UI界面与资源文件
步骤一: 使用 Qt Designer 创建 XXX.ui文件 步骤二: 使用 Qt Designer 创建 资源文件 步骤三: Python文件中创建相关类, 使用 uic.loadUi(mainwidget.ui, self ) 加载UI文件 import sys from PyQt5 import QtCore, QtWidgets, uic from PyQt5.QtCore import Qt f…...
【MySQL】数据库知识突破:数据类型全解析与详解
前言:本节内容讲述MySQL的数据类型, 我们在学习之前的建表的时候已经用过各种各样的数据类型。 比如int、varchar、char类型等等。其中它们是对表的结构的操作, 并没有对数据的内容进行操作,所以它叫做DDL。另外,还有…...
使用Golang实现开发中常用的【实例设计模式】
使用Golang实现开发中常用的【实例设计模式】 设计模式是解决常见问题的模板,可以帮助我们提升思维能力,编写更高效、可维护性更强的代码。 单例模式: 描述:确保一个类只有一个实例,并提供一个全局访问点。 优点&…...
【Java学习】电脑基础操作和编程环境配置
CMD 在Windows中用命令行的方式操作计算机。 打开CMD Win R输入CMD按下回车键 Win E 进入我的电脑 常用的CMD命令 盘符名称冒号 说明:盘符切换 举例:E:回车,表示切换到E盘 dir 说明:查看当前路径下的内容 cd目录 说明&a…...
AVL树解析
目录 一. AVL的概念 二 AVL树的插入 2.1先按二叉搜索树的规则插入 2.2 AVL的重点:平衡因子更新 3.1 更新后parent的平衡因子等于0。 3.2 更新后parent的平衡因子等于1 或 -1,需要继续往上更新。 3.3 更新后parent的平衡因子等于2 或 -2,需…...
栈和队列(Java)
一.栈(Stack) 1.定义 栈是限定仅在表尾进行插入或删除操作的线性表 一般的表尾称为栈顶 表头称为栈底 栈具有“后进先出”的特点 2.对栈的模拟 栈主要具有以下功能: push(Object item):将元素item压入栈顶。 pop()&am…...
C#设计原则
文章目录 项目地址一、开放封闭原则1.1 不好的版本1.2 将BankProcess的实现改为接口1.3 修改BankStuff类和IBankClient类二、依赖倒置原则2.1 高层不应该依赖于低层模块2.1.1 不好的例子2.1.2 修改:将各个国家的歌曲抽象2.2 抽象不应该依于细节2.2.1 不同的人开不同的车(接口…...
easyfs 简易文件系统
easyfs easyfs 简易文件系统文件系统虚拟文件系统 VFS简易文件系统 easyfs磁盘布局超级块 easyfs 文件系统结构磁盘上的索引结构索引节点Inode 和 DiskInode 之间的关系举例说明读取文件的过程( /hello ) 参考文档 easyfs 简易文件系统 文件系统 常规文…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
