代码之家  ›  专栏  ›  技术社区  ›  crimsonpython24

Django的“任何”路径?

  •  0
  • crimsonpython24  · 技术社区  · 4 年前

    如果Django在定义的URL中找不到匹配项,是否可以定义重定向到的路由?

    例如,假设我有:

    urlpatterns = [
        path('ajaxlogin', views.ajax_login, name='ajaxlogin'),
        path('ajaxprofile', views.ajax_profile, name='ajaxprofile'),
    ]
    

    /ajaxsignup /ajaxdelete ,但是否将它们重定向到某个视图的URL?

    换句话说:

    urlpatterns = [
        path('ajaxlogin', views.ajax_login, name='ajaxlogin'),
        path('ajaxprofile', views.ajax_profile, name='ajaxprofile'),
        path('every-other-url', views.another_view, name='path-everything-else'),
    ]
    

    我知道有Django的错误处理程序,但是有没有其他方法来实现这一点?我的前端分别基于React应用程序,因此我非常喜欢使用“动态”URL,而不是使用Django的默认404响应。

    我怀疑如果 path url 但我还是不知道。

    提前谢谢。

    1 回复  |  直到 4 年前
        1
  •  2
  •   Trent    4 年前

    只需在urlpatterns的末尾添加一个通配符re\u路径:

    from django.http import HttpResponse
    from django.urls import re_path
    
    def http_response(request):
        return HttpResponse('<h1>Hello HttpResponse</h1>')
    
    urlpatterns = [
        path('ajaxlogin', views.ajax_login, name='ajaxlogin'),
        path('ajaxprofile', views.ajax_profile, name='ajaxprofile'),
        path('every-other-url', views.another_view, name='path-everything-else'),
        re_path(r'.*', http_response), # only if the above routes don't trigger a match
    ]