我有投票应用
以下是我的根网址
urlpatterns = [
path('poll/', include('myproject.poll.urls')),
]
我有app url
router = DefaultRouter()
router.register(r'', PollViewSet)
urlpatterns = [
path('', include(router.urls))
]
我使用了ViewSet,因此我可以使用reverse('poll-list')
,reverse('poll-detail')
...
我可以访问xxx.xxx.xxx.xxx/poll
和xxx.xxx.xxx.xxx/poll/1/
....
但是当我访问xxx.xxx.xxx.xxx/api/v1/poll/
到xxx.xxx.xxx.xxx/poll
我不想更改现有的网址。
因为我想将几个应用的视图捆绑到一个api url文件中。
我该怎么做?什么是最好的方式?
答案 0 :(得分:4)
您可以通过两种方式实现:
在根网址中添加地图网址并保持应用网址完好无损:
root url看起来像:
urlpatterns = [
path('poll/', include('myproject.poll.urls')),
path('api/v1/poll/', include('myproject.poll.urls')),
]
这不会重定向,但您的API(应用网址)将来自两个网址
添加RedirectView
from django.views.generic.base import RedirectView
urlpatterns = [
path('poll/', include('myproject.poll.urls')),
path('api/v1/poll/', RedirectView.as_view(url='/poll/')),
]
这会将xxx.xxx.xxx.xxx/api/v1/poll/
的所有请求重定向到xxx.xxx.xxx.xxx/poll/