新聞中心
Django是一個(gè)強(qiáng)大的Python Web框架,擁有全面的開發(fā)功能和易于使用的模板語言,旨在使Web開發(fā)更加簡(jiǎn)單。其中一個(gè)強(qiáng)大的功能就是實(shí)現(xiàn)數(shù)據(jù)庫搜索及結(jié)果展示。在本文中,我們將介紹Django如何實(shí)現(xiàn)這一功能。

1. 創(chuàng)建Django項(xiàng)目
我們需要?jiǎng)?chuàng)建一個(gè)新的Django項(xiàng)目。通過以下命令可以創(chuàng)建一個(gè)名為“myproject”的新項(xiàng)目:
“`
django-admin startproject myproject
“`
2. 創(chuàng)建Django應(yīng)用程序
接下來,我們需要?jiǎng)?chuàng)建一個(gè)名為“search”的新Django應(yīng)用程序。通過以下命令可以創(chuàng)建一個(gè)名為“search”的新應(yīng)用程序:
“`
python manage.py startapp search
“`
3. 創(chuàng)建數(shù)據(jù)庫模型
接下來,我們需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫模型,它將存儲(chǔ)我們要搜索和展示的數(shù)據(jù)。在本文中,我們將創(chuàng)建一個(gè)簡(jiǎn)單的模型,其中包含一個(gè)名為“title”的CharField和一個(gè)名為“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
“`
在這里,我們創(chuàng)建了一個(gè)名為“Post”的模型,并定義了“title”和“content”兩個(gè)字段。然后,我們覆蓋了“__str__”方法,以便在對(duì)象的字符串表示中返回“title”字段的值。
4. 遷移數(shù)據(jù)庫
接下來,我們需要遷移數(shù)據(jù)庫以創(chuàng)建我們的新模型。通過以下命令可以完成遷移:
“`
python manage.py makemigrations
python manage.py migrate
“`
5. 創(chuàng)建數(shù)據(jù)
接下來,我們需要?jiǎng)?chuàng)建一些數(shù)據(jù),以便在我們的搜索和結(jié)果展示中使用。打開“search/admin.py”文件,并將以下代碼添加到文件中:
“`
from django.contrib import admin
from .models import Post
admin.site.register(Post)
“`
在這里,我們注冊(cè)了我們創(chuàng)建的“Post”模型。這將創(chuàng)建一個(gè)名為“Posts”的鏈接,我們可以在其中創(chuàng)建、編輯和刪除Post對(duì)象。
現(xiàn)在,我們可以通過打開Django管理界面(http://127.0.0.1:8000/admin/)來創(chuàng)建一些數(shù)據(jù)。單擊“Posts”鏈接,然后單擊“Add”按鈕。在這里,您可以輸入“title”和“content”字段的值。創(chuàng)建數(shù)據(jù)之后,我們可以繼續(xù)實(shí)現(xiàn)搜索的代碼。
6. 創(chuàng)建搜索表單
為了實(shí)現(xiàn)搜索,我們需要?jiǎng)?chuàng)建一個(gè)搜索表單。在“search”應(yīng)用程序中創(chuàng)建一個(gè)名為“forms.py”的新文件,并將以下代碼添加到文件中:
“`
from django import forms
class SearchForm(forms.Form):
query = forms.CharField()
“`
在這里,我們創(chuàng)建了一個(gè)名為“SearchForm”的表單,并定義了一個(gè)名為“query”的CharField。該表單將請(qǐng)求一個(gè)查詢字符串,我們將使用這個(gè)查詢字符串在數(shù)據(jù)庫中搜索匹配的Post對(duì)象。
7. 創(chuàng)建搜索視圖
接下來,我們需要?jiǎng)?chuàng)建一個(gè)搜索視圖,它將處理從搜索表單POST的查詢字符串并返回匹配的Post對(duì)象。在“search”應(yīng)用程序中創(chuàng)建一個(gè)名為“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})
“`
在這里,我們定義了一個(gè)名為“search”的視圖,它將處理從搜索表單POST的查詢字符串,并在數(shù)據(jù)庫中查找匹配的Post對(duì)象。
視圖首先創(chuàng)建了一個(gè)名為“form”的SearchForm對(duì)象,并將其與請(qǐng)求的POST數(shù)據(jù)綁定。然后,我們創(chuàng)建了一個(gè)名為“results”的空列表。
如果請(qǐng)求的方法是POST并且表單有效,則我們通過查詢字符串過濾Post對(duì)象并將其存儲(chǔ)在“results”中。
視圖使用“search.html”模板呈現(xiàn)響應(yīng)。我們將在下一步中創(chuàng)建這個(gè)模板。
8. 創(chuàng)建搜索模板
我們需要?jiǎng)?chuàng)建一個(gè)名為“search.html”的模板,它將呈現(xiàn)搜索表單和搜索結(jié)果。在“search/templates”文件夾中創(chuàng)建一個(gè)新文件夾,并將其命名為“search”。在“search/templates/search”中創(chuàng)建一個(gè)名為“search.html”的新文件,并將以下代碼添加到文件中:
“`
{% extends ‘base.html’ %}
{% block content %}
Search
{% csrf_token %}
{{ form.as_p }}
Search
{% if results %}
Results
- {{ result.title }}
{% for result in results %}
{% endfor %}
{% endif %}
{% endblock %}
“`
在這里,我們使用Django模板繼承機(jī)制擴(kuò)展了名為“base.html”的基本模板。然后,我們?cè)谀0逯刑砑恿艘粋€(gè)名為“content”的塊,其中包含一個(gè)搜索表單和一個(gè)名為“results”的結(jié)果列表。
表單使用POST方法提交到名為“search”的URL。用于生成表單代碼的“{{ form.as_p }}”模板標(biāo)記用于在頁面上呈現(xiàn)它。我們?cè)凇皗% if results %}”行上檢查是否有結(jié)果,并在頁面上呈現(xiàn)它們。
9. 呈現(xiàn)搜索輸出
現(xiàn)在,我們可以啟動(dòng)開發(fā)服務(wù)器并在瀏覽器中導(dǎo)航到http://127.0.0.1:8000/search/,以實(shí)際查看搜索功能。輸入要搜索的查詢字符串并單擊“Search”按鈕。
如果存在匹配的Post對(duì)象,則它們將在頁面上列表中顯示出來。否則,將顯示一個(gè)空列表。
在本文中,我們演示了如何使用Django實(shí)現(xiàn)數(shù)據(jù)庫搜索功能。我們創(chuàng)建了一個(gè)Django項(xiàng)目和應(yīng)用程序,定義了一個(gè)簡(jiǎn)單的數(shù)據(jù)庫模型,并使用Django管理界面創(chuàng)建了一些示例數(shù)據(jù)。接下來,我們創(chuàng)建了一個(gè)搜索表單和一個(gè)搜索視圖來處理用戶查詢,并使用Django模板呈現(xiàn)搜索結(jié)果。通過這個(gè)實(shí)現(xiàn),我們可以輕松地為Django應(yīng)用程序添加強(qiáng)大的搜索功能。
相關(guān)問題拓展閱讀:
- django怎么現(xiàn)實(shí)數(shù)據(jù)庫了里的圖片?
- django 怎么查詢mongodb數(shù)據(jù)
- Django里面怎么實(shí)現(xiàn)數(shù)據(jù)庫視圖啊 就是虛擬表
django怎么現(xiàn)實(shí)數(shù)據(jù)庫了里的圖片?
數(shù)據(jù)庫里只廳桐存對(duì)應(yīng)的照片地址啦···· 比如 upload/images/xxx.jpg P頁面就這樣顯示咯 創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
網(wǎng)站題目:Django實(shí)現(xiàn)數(shù)據(jù)庫搜索及結(jié)果展示教程(django搜索數(shù)據(jù)庫并顯示)
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/djedosd.html


咨詢
建站咨詢
