Django 路由给出 404

Django route giving 404

我在我的 django 主应用程序的 urls.py 文件中注册了一个 route 作为:

router.register(r"visual/(?P<random_url>[\w]+)/$", views.LinkTest, basename="test")

url模式定义为:

urlpatterns = [
    # Admin
    path("admin/", admin.site.urls),
    # Model API Routes
    path("rest/api/latest/", include(router.urls))
]

这意味着我应该能够通过以下调用viewset

http://localhost:8000/rest/api/latest/visual/random_string/

但我收到 404

谁能告诉我我做错了什么?

这里的问题是,虽然您的 url visual/random_string/ 与正则表达式 visual/(?P<random_url>[\w]+)/$ 匹配,但路由器会自动将 /$ 添加到您指定的正则表达式。

因此,在内部,您的正则表达式正在转换为 visual/(?P<random_url>[\w]+)/$/$,这与 visual/random_string/ 不匹配。

因此,从您的正则表达式中删除 /$,只保留以下代码。

router.register(r"visual/(?P<random_url>[\w]+)", views.LinkTest, basename="test")