【发布时间】:2018-06-10 18:55:58
【问题描述】:
我正在使用 Django 2.0 和 DRF 3.7.7(两者都是新手)并尝试在 app_config/urls.py 中添加 URL 模式:
router = routers.DefaultRouter()
router.register(r'^submit_free_account', SubmitFreeAccount, 'SubmitFreeAccount')
app_name = 'app_config' #the weird code
urlpatterns = [
path('getSourcesNodes', GetSourcesNodes.post, name='GetSourcesNodes'),
path('getAppsNodes', GetAppsNodes.post, name='GetAppsNodes'),
]
urlpatterns += router.urls
在主 urls.py 中:
urlpatterns = [
path('admin/', admin.site.urls),
path('config/', include('app_config.urls', namespace='app_config')),
]
因此,当我尝试请求 config/submit_free_account 时,出现 404 错误,Django 尝试了奇怪的 URL 模式:
config/ ^$ [name='api-root']
config/ ^\.(?P<format>[a-z0-9]+)/?$ [name='api-root']
如何在 Django 2.0 中正确添加路由器 URL 模式?
【问题讨论】:
-
router.registet应该与视图集一起使用。 SubmitFreeAccount 是视图集吗?显示代码。 -
SubmitFreeAccount 是 APIView(应该是 DRF 视图的标准类)
-
视图不需要路由器,只需要一个视图集。使用标准的
path()或url()来定义路由。 -
Daniel Roseman,但如果这样我有一个错误:“init 需要 1 个位置参数,但给出了 2 个”。它是 DRF,所以我不想使用 as_view() 方法。所以我不能有基于 CLASS 的视图。
-
我不明白你为什么不想使用 as_view。这就是注册基于类的视图的方式。
标签: python django django-rest-framework url-routing