Django

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

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

Los usuarios normalmente recuperan 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 el contenido deseado dentro del sitio sin utilizar 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.

Requisitos previos:

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

  1. Instale Django versión 3+ en Ubuntu 20+ (preferiblemente)
  2. Crea un proyecto de Django
  3. Ejecute el servidor Django para comprobar si el servidor funciona correctamente o no.

Configura una aplicación Django:

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

$ python3 administrar.py startapp seekchapp

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

$ python3 administrar.py crea superusuario

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

INSTALLED_APPS = [
..
'busquedapp'
]

Cree una carpeta llamada templates dentro de la carpeta de la aplicación de búsqueda 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 / seekchapp / templates'],
.. .
,
]

Crear modelos:

Modificar los modelos.py archivo con el siguiente script. Aquí, se han definido dos clases para crear dos tablas relacionales denominadas tipos de libros y libros. El campo de tipo de la tabla de libros es una clave externa que aparecerá en la tabla de tipos de libros.

modelos.py

# Importar módulos necesarios
de django.modelos de importación de db
de django.urls importar inversa
# Crear modelo gor tipo de libro
clase Booktype (modelos.Modelo):
btype = modelos.CharField (max_length = 100, único = verdadero)
clase Meta:
ordering = ('btype',)
# Crear libro modelo gor
Libro de clase (modelos.Modelo):
book_name = modelos.CharField (longitud_máxima = 150)
author_name = modelos.CharField (longitud_máxima = 150)
tipo = modelos.ForeignKey (tipo de libro, on_delete = modelos.CASCADA)
precio = modelos.FloatField ()
publicación = modelos.CharField (longitud_máxima = 100)
clase Meta:
ordering = ('nombre_libro',)
def __str __ (yo):
Regresar.nombre del libro
def get_url (yo):
return reverse ('book_detail', args = [self.identificación])

Cree plantillas para realizar búsquedas:

Se requieren tres archivos HTML para crear la función de búsqueda que se muestra en este tutorial. Estos son book_list.html, book_detail.html y buscar.html. La lista de libros.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.name % else% Lista de libros % endif%











% por 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: type


Publicación: libro.publicación


Precio: $ libro.precio







buscar.html



Resultado de búsqueda









% si consulta%


% con resultados.contar como total_results%
Se encontró total_results resultado total_results | pluralize
% terminar con %


% para c en los 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.py archivo con el siguiente script. Se han definido tres funciones en el script. La función book_list () mostrará la lista book_list.archivo html. La función book_detail () mostrará el book_detail.html. La función de búsqueda () buscará los registros en función de 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.atajos de importación render, get_object_or_404
de .importación de modelos Libro, Tipo de libro
de django.db.modelos importan Q
# Definir función para mostrar todos los libros
def lista_libros (solicitud):
book = Libro.objetos.todas()
return render (solicitud, 'lista_libros.html ', ' libro ': libro)
# Definir función para mostrar el libro en particular
def book_detail (solicitud, id):
book = get_object_or_404 (Libro, id = id)
tipos = Tipo de libro.objetos.todas()
t = tipos.obtener (id = libro.tipo.identificación)
return render (solicitud, 'book_detail.html ', ' libro ': libro,' tipo ': t.btype)
# Definir función para buscar libro
def búsqueda (solicitud):
resultados = []
si la solicitud.método == "OBTENER":
consulta = solicitud.OBTENER.get ('buscar')
si consulta == ":
query = 'Ninguno'
resultados = Libro.objetos.filter (Q (nombre_libro__icontains = consulta) | Q (nombre_autor__icontains = consulta) | Q (precio__icontains = consulta))
return render (solicitud, 'buscar.html ', ' consulta ': consulta,' resultados ': resultados)

Establecer rutas para llamar a las funciones de vista:

Modificar las URL.py archivo del proyecto Django con el siguiente script. Se han definido cuatro rutas en el script. La ruta 'admin /' se usa para abrir el panel administrativo de Django. La ruta vacía (") se usa para llamar a la función book_list (). '/ '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 módulo de administración
de django.administrador de importación de contribuciones
# Módulo de ruta de importación
de django.ruta de importación de URL
# Vista de importación
desde las vistas de importación de la aplicación de búsqueda
# Definir caminos
urlpatterns = [
ruta ('admin /', admin.sitio.urls),
ruta (", vistas.lista_libros, nombre = 'lista_libros'),
ruta ('/', vistas.book_detail, name = 'book_detail'),
ruta ('buscar /', vistas.buscar, nombre = 'buscar'),
]

Ejecute la aplicación desde el navegador:

Ejecute el siguiente comando para ejecutar el servidor Django.

$ python3 administrar.py runserver

Ejecute la siguiente URL desde cualquier navegador para mostrar la lista de libros de la tabla.

http: // localhost: 8000

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

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

Conclusión:

En este tutorial se implementó una aplicación Django con la opción de búsqueda básica usando tablas de base 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.

Los mejores emuladores de consola de juegos para Linux
Este artículo enumerará el software de emulación de consola de juegos más popular disponible para Linux. La emulación es una capa de compatibilidad de...
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...