Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

295
Visualizações
Django 3.2.6: orden de ruta en la aplicación urls.py relacionado con 404

Tengo varias rutas en mi archivo urls.py para communities de aplicaciones. Aquí están los dos que están causando problemas.

path('posts/<str:username>/<slug:slug>',communities_views.viewPostDetail,name="post_detail")

path('posts/delete_comment/<int:comment_id>',communities_views.viewDeleteComment,name="delete_comment")

Por alguna razón, Django parece confundirse con el orden de estos dos caminos. Cuando está en el orden que se muestra, Django reconoce que delete_comment es una ruta (lo que significa que en las plantillas que usan algo como communities:delete_comment no arroja un error al generar la plantilla), pero cuando intenta navegar a la url, Django sigue post_detail ver y se asusta.

Sin embargo, cuando invierto el orden de estas dos URL, todo funciona bien. ¿Importa el orden? Si es así, eso es bastante inconveniente para proyectos más grandes.

Si se necesita cualquier otra información, por favor hágamelo saber.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Un slug:…> también puede coincidir con una secuencia de números. Si visita posts/delete_comment/123 , Django intentará hacerlo coincidir con los patrones de URL y comenzará con el primero. Esta URL coincidirá con el patrón posts/<str:username>/<slug:slug>/ , ya que establece username = 'delete_comment' y slug = '123' .

Dado que Django siempre activa el primer patrón de URL que coincide, si intenta eliminar un comentario, activará viewPostDetail .

Lo que puede hacer es especificar los artículos en un orden diferente:

 urlpatterns = [ # ↓ first try to match with the delete_comment URL pattern path('posts/delete_comment/<int:comment_id>',communities_views.viewDeleteComment,name="delete_comment"), path('posts/<str:username>/<slug:slug>',communities_views.viewPostDetail,name="post_detail") ]

Otra opción es hacer dos patrones de URL que no se superpongan, por ejemplo con:

 urlpatterns = [ # ↓ non-overlapping URLs path('posts/<str:username>/ view /<slug:slug>',communities_views.viewPostDetail,name="post_detail"), path('posts/delete_comment/<int:comment_id>',communities_views.viewDeleteComment,name="delete_comment") ]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda