我正在使用 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 模式?
请您参考如下方法:
参见:Django REST Framework URLs with Django 2.0
router = routers.DefaultRouter()
# change to (see user8814926's answer):
router.register('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'),
#add this:
path('', include(router.urls)),
]
总结一下:
- 不要使用正则表达式
- 不是通过添加到列表来包含路由,而是使用上面所示的 include 方法
