Um determinado conteúdo de qualquer site é normalmente recuperado pelos usuários por meio de pesquisa do Google. No entanto, se esta opção de pesquisa for implementada no site, os usuários podem encontrar facilmente o conteúdo desejado dentro do site sem usar a pesquisa do Google ... Outro benefício de adicionar uma opção de pesquisa em um site é que o desenvolvedor pode gerenciar a saída da pesquisa de forma adequada. Isso significa que ele pode controlar qual conteúdo do site aparecerá ou não. Este tutorial irá mostrar o processo de implementação da pesquisa básica no site Django.
Pré-requisitos:
Antes de praticar o script deste tutorial, você deve concluir as seguintes tarefas:
- Instale o Django versão 3+ no Ubuntu 20+ (de preferência)
- Crie um projeto Django
- Execute o servidor Django para verificar se o servidor está funcionando corretamente ou não.
Configure um aplicativo Django:
Execute o seguinte comando para criar um aplicativo Django chamado searchapp.
$ python3 manage.py startapp searchappExecute o seguinte comando para criar o usuário para acessar o banco de dados Django. Se você já criou o usuário antes, não precisa executar o comando.
$ python3 manage.py cria superusuárioAdicione o nome do aplicativo na parte INSTALLED_APP das configurações.arquivo py.
INSTALLED_APPS = […
'searchapp'
]
Crie uma pasta chamada templates dentro da pasta searchapp e defina a localização do template do aplicativo na parte MODELOS das configurações.arquivo py.
MODELOS = [… .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
… .
,
]
Crie modelos:
Modifique os modelos.arquivo py com o seguinte script. Aqui, duas classes foram definidas para criar duas tabelas relacionais chamadas booktypes e books. O campo de tipo da tabela de livros é uma chave estrangeira que aparecerá na tabela de tipos de livros.
modelos.py
# Importe os módulos necessáriosde django.modelos de importação db
de django.importação reversa de urls
# Criar modelo gor booktype
classe Booktype (modelos.Modelo):
btype = models.CharField (max_length = 100, unique = True)
classe Meta:
ordenação = ('btype',)
# Crie um modelo de livro
classe Livro (modelos.Modelo):
book_name = modelos.CharField (max_length = 150)
author_name = modelos.CharField (max_length = 150)
type = models.ForeignKey (Booktype, on_delete = models.CASCATA)
preço = modelos.FloatField ()
publicação = modelos.CharField (max_length = 100)
classe Meta:
pedido = ('book_name',)
def __str __ (self):
retornar a si mesmo.book_name
def get_url (self):
return reverse ('book_detail', args = [self.eu ia])
Crie modelos para pesquisa:
Três arquivos HTML são necessários para você criar o recurso de pesquisa mostrado neste tutorial. Estes são book_list.html, book_detail.html e pesquisa.html. The book_list.html irá mostrar todos os registros da tabela de livros. O book_detail.html irá mostrar os detalhes de um livro particular. A pesquisa.html irá mostrar o resultado da pesquisa depois de enviar o formulário de pesquisa.
lista de livros.html
book_detail.html
livro.book_name
Autor: livro.nome do autor
Tipo: type
Publicação: livro.publicação
Preço: $ livro.preço
procurar.html
% se consulta%
% com resultados.contar como total_results%
Resultado total_results encontrado total_results | pluralize
% endwith%
% para c nos resultados%
c.book_name
c.nome do autor
% vazio %
Nenhum resultado encontrado.
% endfor%
% fim se %
Criar funções de visualização:
Modifique as visualizações.arquivo py com o seguinte script. Três funções foram definidas no script. A função book_list () irá mostrar a book_list.arquivo html. A função book_detail () irá mostrar o book_detail.html. A função search () irá pesquisar os registros com base nos dados enviados pelo formulário de pesquisa e exibir o resultado na pesquisa.html.
Visualizações.py
# Importe os módulos necessáriosde django.atalhos import render render, get_object_or_404
a partir de .modelos importar livro, tipo de livro
de django.db.modelos de importação Q
# Definir função para exibir todos os livros
def book_list (solicitação):
livro = livro.objetos.tudo()
return render (request, 'book_list.html ', ' livro ': livro)
# Definir função para exibir o livro particular
def book_detail (solicitação, id):
book = get_object_or_404 (Livro, id = id)
types = Booktype.objetos.tudo()
t = tipos.obter (id = livro.modelo.eu ia)
return render (request, 'book_detail.html ', ' livro ': livro,' tipo ': t.btype)
# Definir função para pesquisar livro
def search (solicitação):
resultados = []
se pedido.método == "GET":
consulta = pedido.OBTER.obter ('pesquisar')
se consulta == ":
consulta = 'Nenhum'
resultados = livro.objetos.filtro (Q (book_name__icontains = query) | Q (author_name__icontains = query) | Q (price__icontains = query))
return render (request, 'search.html ', ' consulta ': consulta,' resultados ': resultados)
Definir caminhos para funções de visualização de chamadas:
Modifique os urls.arquivo py do projeto Django com o seguinte script. Quatro caminhos foram definidos no script. O caminho 'admin /' é usado para abrir o Painel Administrativo do Django. O caminho vazio (") é usado para chamar a função book_list (). '
urls.py
# Importar módulo de administraçãode django.contrib import admin
# Módulo de caminho de importação
de django.caminho de importação de urls
# Vista de importação
de visualizações de importação do searchapp
# Definir caminhos
urlpatterns = [
caminho ('admin /', admin.local.urls),
caminho (", visualizações.book_list, name = 'book_list'),
caminho ('/', visualizações.book_detail, name = 'book_detail'),
caminho ('pesquisa /', visualizações.pesquisar, nome = 'pesquisar'),
]
Execute o aplicativo no navegador:
Execute o seguinte comando para executar o servidor Django.
$ python3 manage.py runserverExecute o seguinte URL em qualquer navegador para exibir a lista dos livros da tabela.
http: // localhost: 8000
Se o usuário clicar no link “PHP e MySQL para sites dinâmicos da Web”, os detalhes deste livro aparecerão no navegador.
Se o usuário pesquisar a palavra física no navegador, o seguinte resultado da pesquisa será exibido no navegador.
Conclusão:
Um aplicativo Django com a opção de pesquisa básica foi implementado neste tutorial usando tabelas de banco de dados. Os novos desenvolvedores Django serão capazes de implementar o recurso de pesquisa em seu site após ler este tutorial.