目前,我将URL配置导入到我的Django项目中,其中包括:
from django.conf.urls import include
from django.contrib import admin
from django.urls import path, re_path
from rest_framework import routers
from greeter.views import GreeterViewSet
ROUTER = routers.DefaultRouter()
ROUTER.register(r'greeters', GreeterViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
re_path(r'^', include(ROUTER.urls)),
]
有没有一种方法可以移动代码的这些部分:
ROUTER = routers.DefaultRouter()
ROUTER.register(r'greeters', GreeterViewSet)
在一个单独的文件中
greeter/urls.py
?
仍然保留这些URL:
-
获取/问候语/获取问候语列表
-
发布/问候语/创建新问候语
我已经尝试过:
我的项目/urls.py
from django.conf.urls import include
from django.contrib import admin
from django.urls import path, re_path
urlpatterns = [
path('admin/', admin.site.urls),
re_path(r'^greeters/', include('greeter.urls')),
]
迎合/ URLS.Py
from django.conf.urls import url, include
from rest_framework import routers
from .views import GreeterViewSet
ROUTER = routers.DefaultRouter()
ROUTER.register(r'^', GreeterViewSet)
urlpatterns = [
url(r'^', include(ROUTER.urls)),
]
但得到:
$ curl -H 'Accept: application/vnd.api+json; indent=2' -X POST http://localhost:8000/greeters/
{
"errors": [
{
"detail": "Method \"POST\" not allowed.",
"source": {
"pointer": "/data"
},
"status": "405"
}
]
}
如果有帮助,我的原始问题已经解决:
Method "POST" not allowed with Django Rest Framework
更新:
在答案的帮助下,我得出了这个解决方案:
我的项目/urls.py
from django.conf.urls import include
from django.contrib import admin
from django.urls import re_path
urlpatterns = [
re_path('admin/', admin.site.urls),
re_path('greeters/', include('greeter.urls')),
]
迎合/ URLS.Py
from django.conf.urls import include
from django.urls import re_path
from rest_framework import routers
from .views import GreeterViewSet
ROUTER = routers.DefaultRouter()
ROUTER.register(r'', GreeterViewSet)
urlpatterns = [
re_path(r'', include(ROUTER.urls)),
]
用这个:
-
所有的问候语URL配置都保存在问候语中。
模块
-
项目URL配置将“问候语”资源与
欢迎模块
-
似乎可以将其他问候语视图添加到
问候语URL配置(我还没有测试过这个)
我认为这是我能得到的最好的。再次感谢您的帮助:)