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
- {{ result.title }}
{% for result in results %}
{% 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应用程序添加强大的搜索功能。