【问题标题】:Why does Django Reverse URL return app_name?为什么 Django 反向 URL 返回 app_name?
【发布时间】:2021-06-05 16:42:18
【问题描述】:

我正在按如下方式配置我的网址:

router = DefaultRouter()
router.register('personal', views.EventPersonalViewSet)
router.register('public', views.EventPublicViewSet)

app_name = 'event'

urlpatterns = [
    path('', include(router.urls)),
]

我希望像这样反转 URL:

EVENT_PERSONAL_URL = reverse('event:personal-list')
EVENT_PUBLIC_URL = reverse('event:public-list')

但是,我只能像这样反转一个 URL:

reverse('event:event-list')

运行 manage.py show_urls 返回以下配置:

/api/event/personal/event.views.EventPersonalViewSet 事件:事件列表

/api/event/personal./event.views.EventPersonalViewSet event:event-list

/api/event/public/event.views.EventPublicViewSet 事件:事件列表

/api/event/public./event.views.EventPublicViewSet event:event-list

为什么 reverse() 会引用 app_name 而不是指定的路径?

【问题讨论】:

    标签: django django-rest-framework django-urls


    【解决方案1】:

    我想是因为你没有在 router.register 中提到 basename。

    你应该尝试像这样在 router.register 中添加 basename

    router.register(prefix='personal', views.EventPersonalViewSet, basename='personal')
    

    现在,您将能够使用反向 url 反向('事件:个人列表')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2015-01-07
      • 2020-11-08
      相关资源
      最近更新 更多