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")
我在我的 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")