Django实现数据库搜索及结果展示教程 (django搜索数据库并显示)

Django是一个强大的Python Web框架,拥有全面的开发功能和易于使用的模板语言,旨在使Web开发更加简单。其中一个强大的功能就是实现数据库搜索及结果展示。在本文中,我们将介绍Django如何实现这一功能。

1. 创建Django项目

我们需要创建一个新的Django项目。通过以下命令可以创建一个名为“myproject”的新项目:

“`

django-admin startproject myproject

“`

2. 创建Django应用程序

接下来,我们需要创建一个名为“search”的新Django应用程序。通过以下命令可以创建一个名为“search”的新应用程序:

“`

python manage.py startapp search

“`

3. 创建数据库模型

接下来,我们需要创建一个数据库模型,它将存储我们要搜索和展示的数据。在本文中,我们将创建一个简单的模型,其中包含一个名为“title”的CharField和一个名为“content”的TextField。

打开“search/models.py”,并将以下代码添加到文件中:

“`

from django.db import models

class Post(models.Model):

title = models.CharField(max_length=200)

content = models.TextField()

def __str__(self):

return self.title

“`

在这里,我们创建了一个名为“Post”的模型,并定义了“title”和“content”两个字段。然后,我们覆盖了“__str__”方法,以便在对象的字符串表示中返回“title”字段的值。

4. 迁移数据库

接下来,我们需要迁移数据库以创建我们的新模型。通过以下命令可以完成迁移:

“`

python manage.py makemigrations

python manage.py migrate

“`

5. 创建数据

接下来,我们需要创建一些数据,以便在我们的搜索和结果展示中使用。打开“search/admin.py”文件,并将以下代码添加到文件中:

“`

from django.contrib import admin

from .models import Post

admin.site.register(Post)

“`

在这里,我们注册了我们创建的“Post”模型。这将创建一个名为“Posts”的链接,我们可以在其中创建、编辑和删除Post对象。

现在,我们可以通过打开Django管理界面(http://127.0.0.1:8000/admin/)来创建一些数据。单击“Posts”链接,然后单击“Add”按钮。在这里,您可以输入“title”和“content”字段的值。创建数据之后,我们可以继续实现搜索的代码。

6. 创建搜索表单

为了实现搜索,我们需要创建一个搜索表单。在“search”应用程序中创建一个名为“forms.py”的新文件,并将以下代码添加到文件中:

“`

from django import forms

class SearchForm(forms.Form):

query = forms.CharField()

“`

在这里,我们创建了一个名为“SearchForm”的表单,并定义了一个名为“query”的CharField。该表单将请求一个查询字符串,我们将使用这个查询字符串在数据库中搜索匹配的Post对象。

7. 创建搜索视图

接下来,我们需要创建一个搜索视图,它将处理从搜索表单POST的查询字符串并返回匹配的Post对象。在“search”应用程序中创建一个名为“views.py”的新文件,并将以下代码添加到文件中:

“`

from django.shortcuts import render

from .models import Post

from .forms import SearchForm

def search(request):

form = SearchForm(request.POST or None)

results = []

if request.method == ‘POST’ and form.is_valid():

query = form.cleaned_data[‘query’]

results = Post.objects.filter(title__icontns=query)

return render(request, ‘search.html’, {‘form’: form, ‘results’: results})

“`

在这里,我们定义了一个名为“search”的视图,它将处理从搜索表单POST的查询字符串,并在数据库中查找匹配的Post对象。

视图首先创建了一个名为“form”的SearchForm对象,并将其与请求的POST数据绑定。然后,我们创建了一个名为“results”的空列表。

如果请求的方法是POST并且表单有效,则我们通过查询字符串过滤Post对象并将其存储在“results”中。

视图使用“search.html”模板呈现响应。我们将在下一步中创建这个模板。

8. 创建搜索模板

我们需要创建一个名为“search.html”的模板,它将呈现搜索表单和搜索结果。在“search/templates”文件夹中创建一个新文件夹,并将其命名为“search”。在“search/templates/search”中创建一个名为“search.html”的新文件,并将以下代码添加到文件中:

“`

{% extends ‘base.html’ %}

{% block content %}

Search

{% csrf_token %}

{{ form.as_p }}

{% if results %}

Results

    {% for result in results %}

  • {{ result.title }}
  • {% endfor %}

{% endif %}

{% endblock %}

“`

在这里,我们使用Django模板继承机制扩展了名为“base.html”的基本模板。然后,我们在模板中添加了一个名为“content”的块,其中包含一个搜索表单和一个名为“results”的结果列表。

表单使用POST方法提交到名为“search”的URL。用于生成表单代码的“{{ form.as_p }}”模板标记用于在页面上呈现它。我们在“{% if results %}”行上检查是否有结果,并在页面上呈现它们。

9. 呈现搜索输出

现在,我们可以启动开发服务器并在浏览器中导航到http://127.0.0.1:8000/search/,以实际查看搜索功能。输入要搜索的查询字符串并单击“Search”按钮。

如果存在匹配的Post对象,则它们将在页面上列表中显示出来。否则,将显示一个空列表。

在本文中,我们演示了如何使用Django实现数据库搜索功能。我们创建了一个Django项目和应用程序,定义了一个简单的数据库模型,并使用Django管理界面创建了一些示例数据。接下来,我们创建了一个搜索表单和一个搜索视图来处理用户查询,并使用Django模板呈现搜索结果。通过这个实现,我们可以轻松地为Django应用程序添加强大的搜索功能。


数据运维技术 » Django实现数据库搜索及结果展示教程 (django搜索数据库并显示)