Cómo construir una búsqueda básica de un sitio de Django?

Cómo construir una búsqueda básica de un sitio de Django?

Los usuarios recuperan normalmente un contenido particular de cualquier sitio a través de la búsqueda de Google. Sin embargo, si esta opción de búsqueda se implementa en el sitio web, los usuarios pueden encontrar fácilmente su contenido deseado dentro del sitio sin usar la búsqueda de Google ... Otro beneficio de agregar una opción de búsqueda dentro de un sitio web es que el desarrollador puede administrar la salida de búsqueda correctamente. Eso significa que puede controlar qué contenido del sitio aparecerá o no. Este tutorial mostrará el proceso de implementación de la búsqueda básica en el sitio de Django.

Prerrequisitos:

Antes de practicar el guión de este tutorial, debe completar las siguientes tareas:

  1. Instale la versión 3+ de Django en Ubuntu 20+ (preferiblemente)
  2. Crear un proyecto Django
  3. Ejecute el servidor Django para verificar que el servidor funcione correctamente o no.

Configurar una aplicación Django:

Ejecute el siguiente comando para crear una aplicación Django llamada SearchApp.

$ python3 gestionar.py startapp searchApp

Ejecute el siguiente comando para crear el usuario para acceder a la base de datos Django. Si ha creado el usuario antes, no necesita ejecutar el comando.

$ python3 gestionar.py createuperuser

Agregue el nombre de la aplicación en la parte Installed_App de la configuración.archivo py.

Instalado_apps = [

'SearchApp'
]

Cree una carpeta con nombre de plantillas dentro de la carpeta SearchApp y establezca la ubicación de la plantilla de la aplicación en la parte de plantillas de la configuración.archivo py.

Plantillas = [

… .
'Dirs': ['/home/fahmida/django_pro/searchapp/plantlates']],
… .
,
]

Crear modelos:

Modificar los modelos.archivo py con el siguiente script. Aquí, se han definido dos clases para crear dos tablas relacionales llamadas libros y libros. El campo Tipo de la mesa de los libros es una clave extranjera que aparecerá de la mesa de libros de libros.

modelos.py

# Importar módulos necesarios
de Django.Modelos de importación de DB
de Django.URLS Importación Reversa
# Crear modelo Gor Booktype
Class Booktype (modelos.Modelo):
btype = modelos.Charfield (max_length = 100, único = verdadero)
Meta de clase:
ordenar = ('btype',)
# Crear libro Model Gor
Libro de clases (modelos.Modelo):
book_name = modelos.Charfield (max_length = 150)
autor_name = modelos.Charfield (max_length = 150)
tipo = modelos.Extranjero (booktype, on_delete = modelos.CASCADA)
precio = modelos.Floatfield ()
publicación = modelos.Charfield (max_length = 100)
Meta de clase:
ordenar = ('book_name',)
def __str __ (self):
volver a ser.nombre del libro
Def get_url (self):
return reverse ('book_detail', args = [self.identificación])

Crear plantillas para buscar:

Se requieren tres archivos HTML para que cree la función de búsqueda que se muestra en este tutorial. Estos son book_list.html, book_detail.html y búsqueda.html. El book_list.HTML mostrará todos los registros de la tabla de libros. El book_detail.HTML mostrará los detalles de un libro en particular. La búsqueda.HTML mostrará el resultado de la búsqueda después de enviar el formulario de búsqueda.

lista de libros.html



Lista de libros










% if type % type.Nombre % else % Lista de libros % endif %











% para x en el libro %

X.nombre del libro


por x.nombre del autor


$ x.precio




% endfor %



book_detail.html





libro.nombre del libro






libro.nombre del libro




Autor: libro.nombre del autor


Tipo: tipo


Publicación: libro.publicación


Precio: $ libro.precio







buscar.html



Resultado de búsqueda









% si consulta %


% con resultados.Cuenta como Total_Results %
Encontrado Total_Results resultado Total_Results | Pluralize
% terminar con %


% para c en resultados %

C.nombre del libro


C.nombre del autor


% vacío %

No se han encontrado resultados.


% endfor %
% terminara si %






Crear funciones de vista:

Modificar las vistas.archivo py con el siguiente script. Se han definido tres funciones en el guión. La función book_list () mostrará el book_list.archivo html. La función book_detail () mostrará el book_detail.html. La función Search () buscará los registros basados ​​en los datos enviados por el formulario de búsqueda y mostrará el resultado en la búsqueda.html.

puntos de vista.py

# Importar módulos necesarios
de Django.Actualcuts Import Render, get_object_or_404
de .Libro de importación de modelos, Booktype
de Django.db.Modelos importar Q
# Definir función para mostrar todos los libros
def libro_list (solicitud):
libro = libro.objetos.todo()
return render (solicitud, 'book_list.html ', ' libro ': libro)
# Definir la función para mostrar el libro en particular
Def book_detail (solicitud, ID):
libro = get_object_or_404 (libro, id = id)
tipos = booktype.objetos.todo()
t = tipos.Get (ID = Libro.tipo.identificación)
devolver render (solicitud, 'book_detail.html ', ' libro ': libro,' type ': t.btype)
# Definir la función para buscar el libro
búsqueda de def (solicitud):
Resultados = []
Si solicite.método == "Get":
consulta = solicitud.CONSEGUIR.Obtener ('buscar')
Si consulta == ":
Query = 'Ninguno'
Resultados = libro.objetos.Filtro (q (book_name__iContains = Query) | Q (autor_name__iContains = Query) | Q (Price__icontains = Query)))
devolver render (solicitud, 'buscar.html ', ' consulta ': consulta,' resultados ': resultados)

Establecer rutas para las funciones de la vista de llamadas:

Modificar las URL.PY FILE del proyecto Django con el siguiente script. Se han definido cuatro caminos en el script. La ruta 'Admin/' se utiliza para abrir el tablero administrativo Django. La ruta vacía (") se usa para llamar a la función book_list (). '/' La ruta se usa para llamar a la función book_detail (). La ruta 'Search/' se usa para llamar a la función Search ().

URLS.py

# Importar el módulo de administración
de Django.administrador de importación de contribución
# Módulo de ruta de importación
de Django.ruta de importación de URLS
# Vista de importación
Desde SearchApp Import Views
# Definir caminos
urlpatterns = [
ruta ('admin/', administrador.sitio.URLS),
ruta (", Vistas.book_list, name = 'book_list'),
ruta ('/', Vistas.book_detail, name = 'book_detail'),
ruta ('búsqueda/', vistas.búsqueda, nombre = 'búsqueda'),
]

Ejecute la aplicación desde el navegador:

Ejecute el siguiente comando para ejecutar el servidor Django.

$ python3 gestionar.py runserver

Ejecute la siguiente URL de cualquier navegador para mostrar la lista de los libros de la mesa.

http: // localhost: 8000

Si el usuario hace clic en el enlace, "PHP y MySQL para sitios web dinámicos", entonces los detalles de este libro aparecerán en el navegador.

Si el usuario busca la palabra, la física en el navegador, el siguiente resultado de la búsqueda se mostrará en el navegador.

Conclusión:

Se ha implementado una aplicación Django con la opción de búsqueda básica en este tutorial utilizando tablas de bases de datos. Los nuevos desarrolladores de Django podrán implementar la función de búsqueda en su sitio web después de leer este tutorial.