当前位置: 首页 > news >正文

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模型的titlecontent字段添加数据库索引。
  • 全文搜索:Django的Q对象支持复杂查询,但对于全文搜索,可能需要使用额外的库,如django-haystack或Django自带的SearchVector
  • 分页:如果搜索结果很多,考虑使用django.core.paginator来实现分页。

7. 测试

启动你的Django项目并访问/search/路径,你应该能够看到一个搜索表单,输入关键词后,页面会显示匹配的博客文章。

相关文章:

django博客项目实现站内搜索功能

Django博客站内搜索功能实现 1. 准备工作 确保Django项目已经创建好&#xff0c;并且有一个用于存储博客文章的模型&#xff08;例如Post&#xff09;。 2. 定义搜索表单 在应用目录下创建一个forms.py文件&#xff0c;定义一个搜索表单。 from django import formsclass …...

蓝桥杯c++算法学习【1】之枚举与模拟(卡片、回文日期、赢球票、既约分数:::非常典型的比刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 枚举与模拟 一、卡片&#xff1a; 【问题描述】 小蓝有很多数字卡片&#xff0c;每张卡片上都是一个数字&#xff08;0到9&#xff09;。 小蓝…...

Android 延时操作的常用方法

一、简介 在Android开发中我们可能会有延时执行某个操作的需求&#xff0c;例如我们启动应用的时候&#xff0c;一开始呈现的是引导页面&#xff0c;3秒后进入主界面&#xff0c;这就是一个延时操作。还有一种是执行某些接口任务时&#xff0c;需要有超时机制。下面介绍常用的…...

AI驱动的轻量级笔记应用Blinko

什么是 Blinko &#xff1f; Blinko 是一个创新的开源项目&#xff0c;专为想要快速捕捉和整理瞬间想法的个人而设计。Blinko 允许用户在灵感迸发的瞬间无缝记录想法&#xff0c;确保不会错过任何创意火花。 Blinko 的设计初衷是让笔记记录变得更简单&#xff0c;让用户专注于内…...

一文搞懂 UML 类图

面向对象设计 主要就是使用UML的类图&#xff0c;类图用于描述系统中所包含的类以及它们之间的相互关系&#xff0c;帮助人们简化对系统的理解&#xff0c;它是系统分析和设计阶段的重要产物&#xff0c;也是系统编码和测试的重要模型依据 一、UML类图简介 统一建模语言 UML …...

Zabbix 7 最新版本安装 Rocky Linux 8

前言 本实验主要在Rocky Linux 中安装Zabbix&#xff0c;其他centos8、Debian、Ubuntu、Alma Linux都可以安装&#xff0c;就是在中间件有点不同。Nginx就要配置一下&#xff0c;官网给的教程也算是很规范的&#xff0c;就是在MySQL上要自己安装&#xff0c;他没有告诉我们&am…...

使用HTML、CSS和JavaScript创建动态雪人和雪花效果

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…...

redis bind 127.0.0.1和bind 10.34.56.78的区别

绑定到 127.0.0.1&#xff0c;默认情况下&#xff0c;Redis 只会接受来自本地主机的连接。其他地址的则无法成功连接。如果绑定到主机的IP地址&#xff0c;则是可以被其他主机连接的。 可以通过iptables规则&#xff0c;进一步限制对redis的访问。 1、允许本地回环接口链接 …...

基于点云的 3D 目标检测模型 PointPillars 部署 tensorRT

PointPillars 3D 目标检测模型部署 tensorRT 一直想折腾一下基于点云的目标检测模型&#xff0c;但由于没有实际项目或工作需要&#xff0c;搞也搞的不够深入&#xff0c;把开源的模型跑一下似乎好像做过又好像没有做过。内心一直想搞一下&#xff0c;选定了 PointPillars 这个…...

centos查看硬盘资源使用情况命令大全

在 CentOS 系统中&#xff0c;你可以使用几个命令来查看硬盘的资源和使用情况。以下是一些常用的命令&#xff1a; 1. df 命令 df (disk free) 用于显示文件系统的磁盘空间占用情况。 df -h-h 参数表示以人类可读的格式&#xff08;如 GB, MB&#xff09;显示。输出会显示每…...

Solon MVC 的 @Mapping 用法说明

在 Solon Mvc 里&#xff0c;Mapping 注解一般是配合 Controller 和 Remoting&#xff0c;作请求路径映射用的。且&#xff0c;只支持加在 public 函数 或 类上。 1、注解属性 属性说明备注value路径与 path 互为别名path路径与 value 互为别名method请求方式限定(defall)可用…...

uni-app表单⑪

文章目录 十七、用户登录-登录界面搭建一、结构样式代码编写 十八、用户登录-表单验证一、userRulesMixin 文件使用二、验证规则编写 十七、用户登录-登录界面搭建 一、结构样式代码编写 uni-forms 插件下载 下载地址&#xff1a;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】数据库知识突破:数据类型全解析与详解

前言&#xff1a;本节内容讲述MySQL的数据类型&#xff0c; 我们在学习之前的建表的时候已经用过各种各样的数据类型。 比如int、varchar、char类型等等。其中它们是对表的结构的操作&#xff0c; 并没有对数据的内容进行操作&#xff0c;所以它叫做DDL。另外&#xff0c;还有…...

使用Golang实现开发中常用的【实例设计模式】

使用Golang实现开发中常用的【实例设计模式】 设计模式是解决常见问题的模板&#xff0c;可以帮助我们提升思维能力&#xff0c;编写更高效、可维护性更强的代码。 单例模式&#xff1a; 描述&#xff1a;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 优点&…...

【Java学习】电脑基础操作和编程环境配置

CMD 在Windows中用命令行的方式操作计算机。 打开CMD Win R输入CMD按下回车键 Win E 进入我的电脑 常用的CMD命令 盘符名称冒号 说明&#xff1a;盘符切换 举例&#xff1a;E:回车&#xff0c;表示切换到E盘 dir 说明&#xff1a;查看当前路径下的内容 cd目录 说明&a…...

AVL树解析

目录 一. AVL的概念 二 AVL树的插入 2.1先按二叉搜索树的规则插入 2.2 AVL的重点&#xff1a;平衡因子更新 3.1 更新后parent的平衡因子等于0。 3.2 更新后parent的平衡因子等于1 或 -1&#xff0c;需要继续往上更新。 3.3 更新后parent的平衡因子等于2 或 -2&#xff0c;需…...

栈和队列(Java)

一.栈&#xff08;Stack&#xff09; 1.定义 栈是限定仅在表尾进行插入或删除操作的线性表 一般的表尾称为栈顶 表头称为栈底 栈具有“后进先出”的特点 2.对栈的模拟 栈主要具有以下功能&#xff1a; push(Object item)&#xff1a;将元素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 之间的关系举例说明读取文件的过程&#xff08; /hello &#xff09; 参考文档 easyfs 简易文件系统 文件系统 常规文…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...