gpt4 book ai didi

django - 如何在Django 2中注册DRF路由器URL模式

转载 作者:行者123 更新时间:2023-12-04 13:56:56 25 4
gpt4 key购买 nike

我的DRF路由器指定了一个 namespace ,以便我可以reverse我的网址:

urls.py:

router = DefaultRouter()
router.register('widget/', MyWidgetViewSet, base_name='widgets')
urlpatterns =+ [
url(r'/path/to/API/', include(router.urls, namespace='widget-api'),
]

升级到django 2时,可以得到:

django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.



Django 2 now requires app_name(如果在使用 namespace时指定了 include kwarg)。由DRF url路由器构造url模式时,指定 app_name的正确方法是什么?我认为 the documentation在django 2上不是最新的。

最佳答案

您需要将app_name = 'x'放入应用程序的url.py文件中。这有点埋藏在文档中:
https://docs.djangoproject.com/en/2.0/topics/http/urls/#id5

例如,如果在/project/project/urls.py中,您具有:

path('', include('app.urls', namespace='app'))

然后,在相应的url文件中(在 /project/app/urls.py中),您需要使用以下命令指定 app_name参数:
app_name = 'app'  #the weird code
urlpatterns = [
path('', views.index, name = 'index'), #this can be anything
]

关于django - 如何在Django 2中注册DRF路由器URL模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47654342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com