es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El botón ‘Ver en vivo’ de Wagtail proporciona una URL incorrecta después de la creación de la página al utilizar el id como slug.

Tengo un caso que utiliza el ID de la página como un slug, después de crear una nueva página, Wagtail nos proporciona un botón de “Ver en vivo” pero cuando hacemos clic en ese botón, proporciona una URL incorrecta

enter image description here

enter image description here

La URL correcta debería ser “…/property-list/

He buscado en Stack Overflow y encontré este hilo, pero la respuesta aún es un misterio:
https://stackoverflow.com/questions/64508344/wrong-view-live-url-in-wagtail-admin-message-after-page-creation-when-using-id

He seguido el documento oficial de Wagtail, utilizando Wagtail Hooks para manipular los datos. Sin embargo, aún no tengo éxito. Este es mi código:

@hooks.register('after_create_page')
def set_number_and_slug_after_property_page_created(request, page):
    page.number = page.slug = str(page.id)
    page.save()
    new_revision = page.save_revision()
    if page.live:
        new_revision.publish()

Por favor, ayúdeme. Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    A partir de las capturas de pantalla proporcionadas, parece que la URL generada por el botón “Ver en vivo” de Wagtail está utilizando el slug incorrecto, que debería ser el ID de la página en su lugar. Para solucionar este problema, puedes intentar usar el siguiente código en tus Hooks de Wagtail:

    from django.urls import reverse
    
    @hooks.register('construct_wagtail_urls')
    def override_page_view_urls(parent_page, page, url_parts):
        if parent_page and parent_page.slug == 'property-list':
            property_id = page.id
            url_parts['view'] = reverse('property_view', args=[property_id])
    

    Este código anulará la URL generada por el botón “Ver en vivo” de Wagtail para todas las páginas que tengan una página padre con el slug “property-list”. Reemplazará la URL predeterminada con una nueva URL que incluye el ID de la página, utilizando la función reverse de Django para generar la URL en función de la configuración de URL de tu proyecto.

    Debes asegurarte de tener una función de vista de Django o un patrón de URL para el nombre de URL “property_view” que acepte un parámetro de ID de propiedad y muestre la página correspondiente. Puedes modificar el nombre de la URL y la función de vista para que se ajusten a los requisitos de tu proyecto.

    ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta o problema.

Comments are closed.