django网址不匹配

问题描述 投票:1回答:1

我正在做一个项目,我有一个特定网址的问题,不想与我为它制作的网址正则表达式匹配。此外,它一直运作到今天。

这是带按钮的html代码

    <button class="btn editar" onclick="location.href='{% url 'ver_caso' caso_id=caso.id %}';">Crear caso</button>

这里是我在urls.py文件中的所有网址

urlpatterns = [    

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    #Casos en curso
    url(r'^casos/en_curso/buscador_inteligente/editar_entidad/(?P<tipo>[A-z úé]+)/(?P<id_ent>\d+)/(?P<id_caso>\d+)/$', views.editar_entidad, name='editar_entidad'),
    url(r'^casos/en_curso/buscador_inteligente/guardar_resultadoInteligente/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.guardar_resultadoInteligente, name='guardar_resultadoInteligente'),
    url(r'^casos/en_curso/buscador_guiado/guardar_resultadoGuiado/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.guardar_resultadoGuiado, name='guardar_resultadoGuiado'),
    url(r'^casos/en_curso/buscado_general/guardar_resultadoGeneral/(?P<caso_id>\d+)/(?P<expresion>.+)/$', views.guardar_resultadoGeneral, name='guardar_resultadoGeneral'),
    url(r'^casos/en_curso/buscador_inteligente/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.buscador_inteligente, name='buscador_inteligente'),
    url(r'^casos/en_curso/buscador_guiado/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.buscador_guiado, name='buscador_guiado'),
    url(r'casos/en_curso/compartir_casos/(?P<caso_id>\d+)/(?P<tipo>[A-z úé]+)/$', views.compartir_casos, name='compartir_casos'),
    url(r'^casos/en_curso/administrar_casos/(?P<tipo>[A-z úé]+)/$', views.administrar_casos, name='administrar_casos'),
    url(r'^casos/en_curso/buscador_general/(?P<caso_id>\d+)/$', views.buscador_general, name='buscador_general'),
    url(r'^casos/en_curso/agregar_doc/(?P<caso_id>\d+)/$', views.agregar_doc, name='agregar_doc'),
    url(r'^casos/en_curso/nuevo_caso/$', views.nuevo_caso, name='nuevo_caso'),
    url(r'^casos/en_curso/ver_caso/(?P<caso_id>\d+)$', views.ver_caso, name='ver_caso'),
    url(r'^casos/en_curso/$', views.casos, name='casos'),

    #Resultados
    url(r'^resultados/eliminar_resultadoCaso/(?P<caso_id>\d+)/(?P<resultado_id>\d+)/(?P<tipo>[A-z úé]+)/$', views.eliminar_resultadoCaso, name='eliminar_resultadoCaso'),
    url(r'^resultados/eliminar_resultado/(?P<caso_id>\d+)/(?P<resultado_id>\d+)/(?P<tipo>[A-z úé]+)/$', views.eliminar_resultado, name='eliminar_resultado'),
    url(r'^resultados/crearInforme/(?P<resultado_id>\d+)/(?P<tipo_informe>[A-z úé]+)/$', views.crearInforme, name='crearInforme'),
    url(r'^resultados/ver_resultado/(?P<resultado_id>\d+)/(?P<tipo>[A-z úé]+)/$', views.ver_resultado, name='ver_resultado'),
    url(r'^resultados/$', views.resultados, name='resultados'),

    #Casos finalizados
    url(r'^casos/documentos_caso/(?P<caso_id>\d+)/(?P<destino>FrontEnd/documentos_[a-z]+\.html)/$', views.documentos_caso, name='documentos_caso'),
    url(r'^casos/resultados_caso/(?P<caso_id>\d+)/(?P<destino>FrontEnd/resultados_[a-z]+\.html)/$', views.resultados_caso, name='resultados_caso'),
    url(r'^casos/informes_caso/(?P<caso_id>\d+)/(?P<destino>FrontEnd/informes_[a-z]+\.html)/$', views.informes_caso, name='informes_caso'),
    url(r'casos/finalizados/compartir_casosFinalizado/(?P<caso_id>\d+)/$', views.compartir_casoFinalizado, name='compartir_casoFinalizado'),
    url(r'^casos/finalizados/eliminar_finalizado/(?P<caso_id>\d+)/$', views.eliminar_finalizado, name='eliminar_finalizado'),
    url(r'^casos/finalizados/$', views.casos_finalizados, name='casos_finalizados'),

    #Documentos
    url(r'^documentos/mensaje_nuevo/(?P<id_doc>\d+)/(?P<id_caso>\d+)/$', views.mensaje_nuevo, name='mensaje_nuevo'),
    url(r'^documentos/eliminar_doc/(?P<id_doc>\d+)/(?P<id_caso>\d+)/$', views.eliminar_doc, name='eliminar_doc'),
    url(r'^documentos/agregar_docDocumentos/(?P<caso_id>\d+)/$', views.agregar_docDocumentos, name='agregar_docDocumentos'),
    url(r'^documentos/agregar_docCaso/(?P<caso_id>\d+)/$', views.agregar_docCaso, name='agregar_docCaso'),
    url(r'^documentos/ver_doc/(?P<id_doc>\d+)/$', views.ver_doc, name='ver_doc'),
    url(r'^documentos/$', views.documentos, name='documentos'),

    #Notas
    url(r'^notas/eliminar_nota/(?P<id>\d+)/(?P<tipo>[A-z úé]+)/(?P<id_nota>\d+)/$', views.eliminar_nota, name='eliminar_nota'),
    url(r'^ver_notas/eliminar_notacaso/(?P<id_caso>\d+)/(?P<id_nota>\d+)/$', views.eliminar_notacaso, name='eliminar_notacaso'),
    url(r'^notas/(?P<id>\d+)/(?P<tipo>[A-z úé]+)/$', views.notas, name='notas'),
    url(r'^ver_notas/crear_nota/(?P<id_caso>\d+)/$', views.crear_nota, name='crear_nota'),
    url(r'^ver_notas/$', views.ver_notas, name='ver_notas'),

    #Informes
    url(r'^informes/eliminar_informe/(?P<informe_id>\d+)/$', views.eliminar_informe, name='eliminar_informe'),
    url(r'^informes/ver_informe/(?P<id_informe>\d+)/$', views.ver_informe, name='ver_informe'),
    url(r'^informes/$', views.informes, name='informes'),

    url(r'^login/$',
        django.contrib.auth.views.login,
        {
            'redirect_authenticated_user': True,
            'template_name': 'FrontEnd/login.html',
            'authentication_form': FrontEnd.forms.BootstrapAuthenticationForm,
            'extra_context':
            {
                'title': 'Iniciar sesión',
                'year': datetime.now().year,
            }
        },
        name='login'),
    url(r'^logout/$', views.logout_view, name='logout'),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),

    # Home
    url(r'^eliminar_docInicio/(?P<id_doc>\d+)/$', views.eliminar_docInicio, name='eliminar_docInicio'),
    url(r'^eliminar_mensaje/(?P<id_msj>\d+)/$', views.eliminar_mensaje, name='eliminar_mensaje'),
    url(r'^eliminar_usuario/$', views.eliminar_usuario, name='eliminar_usuario'),
    url(r'^crear_usuario/$', views.crear_usuario, name='crear_usuario'),
    url(r'^$', views.home, name='home'),
]

它本应该起作用的观点就是这个

@login_required
def ver_caso(request,caso_id):
    """ Editar un caso ya existente"""
    caso = Caso.objects.get(id=caso_id)
    check_owner(caso.propietario, request.user)
    if request.method == 'POST':
        #Actualizar el caso
        form = CasoFormEdit(instance=caso, data=request.POST)
        if form.is_valid():
            form.save()
            print("entro")
            return HttpResponseRedirect(reverse('casos'))
    else:
        #Solicita el caso para ser modificado, con información precargada
        form = CasoFormEdit(instance=caso)

    context = {'form':form, 
               'caso': caso, 
               'caso_nombre':caso.nombre, 
               'documentos':documentos,
               'title':'Editar caso',
               }

    return render(request,'FrontEnd/editar_caso.html',context)

我认为这应该工作得很好,因为我找不到任何错误,但它继续将我重定向到我点击那个按钮时的同一页面

在这里,您可以看到在页面加载时以及单击该按钮时显示控制台的内容。它一直这样做

[15/Mar/2019 20:59:48] "GET / HTTP/1.1" 200 28390
[15/Mar/2019 20:59:49] "GET / HTTP/1.1" 200 28390
[15/Mar/2019 20:59:50] "GET / HTTP/1.1" 200 28390
[15/Mar/2019 20:59:51] "GET /casos/en_curso/ HTTP/1.1" 200 16825
[15/Mar/2019 20:59:51] "GET /casos/en_curso/ HTTP/1.1" 200 16825
[15/Mar/2019 20:59:53] "POST /casos/en_curso/ HTTP/1.1" 200 16825
[15/Mar/2019 20:59:53] "GET /casos/en_curso/ HTTP/1.1" 200 16825
[15/Mar/2019 21:00:02] "POST /casos/en_curso/ HTTP/1.1" 200 16825
[15/Mar/2019 21:00:02] "GET /casos/en_curso/ HTTP/1.1" 200 16825

任何帮助都会很棒。先感谢您

UPDATE

响应FailSafe问题,不起作用的网址是这个

url(r'^casos/en_curso/ver_caso/(?P<caso_id>\d+)$', views.ver_caso, name='ver_caso'),

它位于urls.py文件中第一个url块内,是最后一个

#Casos en curso
    url(r'^casos/en_curso/buscador_inteligente/editar_entidad/(?P<tipo>[A-z úé]+)/(?P<id_ent>\d+)/(?P<id_caso>\d+)/$', views.editar_entidad, name='editar_entidad'),
    url(r'^casos/en_curso/buscador_inteligente/guardar_resultadoInteligente/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.guardar_resultadoInteligente, name='guardar_resultadoInteligente'),
    url(r'^casos/en_curso/buscador_guiado/guardar_resultadoGuiado/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.guardar_resultadoGuiado, name='guardar_resultadoGuiado'),
    url(r'^casos/en_curso/buscado_general/guardar_resultadoGeneral/(?P<caso_id>\d+)/(?P<expresion>.+)/$', views.guardar_resultadoGeneral, name='guardar_resultadoGeneral'),
    url(r'^casos/en_curso/buscador_inteligente/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.buscador_inteligente, name='buscador_inteligente'),
    url(r'^casos/en_curso/buscador_guiado/(?P<tipo>[A-z úé]+)/(?P<caso_id>\d+)/$', views.buscador_guiado, name='buscador_guiado'),
    url(r'casos/en_curso/compartir_casos/(?P<caso_id>\d+)/(?P<tipo>[A-z úé]+)/$', views.compartir_casos, name='compartir_casos'),
    url(r'^casos/en_curso/administrar_casos/(?P<tipo>[A-z úé]+)/$', views.administrar_casos, name='administrar_casos'),
    url(r'^casos/en_curso/buscador_general/(?P<caso_id>\d+)/$', views.buscador_general, name='buscador_general'),
    url(r'^casos/en_curso/agregar_doc/(?P<caso_id>\d+)/$', views.agregar_doc, name='agregar_doc'),
    url(r'^casos/en_curso/nuevo_caso/$', views.nuevo_caso, name='nuevo_caso'),
    url(r'^casos/en_curso/ver_caso/(?P<caso_id>\d+)$', views.ver_caso, name='ver_caso'),
    url(r'^casos/en_curso/$', views.casos, name='casos'),

我假设当我点击该按钮时,匹配的url是块的最后一个。如果那不是发生的事情,那么我不知道它应该是什么

python html regex django url
1个回答
0
投票

不是最终的解决方案,但是你的url模式结尾处缺少的斜线可能是无意的(因为所有其他网址都有它),这可能会产生意想不到的后果。这是首先没有的模式,然后是斜杠:

url(r'^casos/en_curso/ver_caso/(?P<caso_id>\d+)$', views.ver_caso, name='ver_caso'),
url(r'^casos/en_curso/ver_caso/(?P<caso_id>\d+)/$', views.ver_caso, name='ver_caso'),

除此之外,问题似乎出现在模板中;你正在调用一个不同于你想要的URL(/casos/en_curso/)。您是否尝试过手动输入正确的URL,例如。 yoursite.com/casos/en_curso/ver_caso/1234/? (更正模式后,在最后添加斜杠。)

我的猜测是它可以工作,显示url配置很好。

© www.soinside.com 2019 - 2024. All rights reserved.