我几乎没有使用python的经验。你能帮帮我吗?有一个老项目,它的结构如下
# -*- coding: utf-8 -*-
import re
from django.conf import settings
from django.conf.urls import include, url
from django.contrib import admin
from django.views.static import serve
from rest_framework import routers # i added it
import home.views
router = routers.DefaultRouter() # i added it
urlpatterns = [
url(r'^$', home.views.HomeView.as_view()),
url(r'^api/v2/', include('api.v2.urls', namespace='api-v2')),
url(r'^help/', include('helps.urls', namespace='helps')),
url(r'^admin/', include(admin.site.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), # i added it
url(r'^', include(router.urls)) # i added it
]
我想让REST API,以便您可以看到所有可能的路线。所以我尝试添加rest_framework.urls
。据我所知,有必要使用VeiwSet
将其添加到路由器中。我不太明白如何使用我已经拥有的东西来查看REST API中的链接?或者我需要为每个链接创建一个Veiwset?
例如,api.v2.urls
包含next:(类似于helps.urls,等等)
# -*- coding: utf-8 -*-
from django.conf.urls import url
import api.v2.views
urlpatterns = [
url(r'^data/info', api.v2.views.info_data),
url(r'^visits$', api.v2.views.visits),
url(r'^additional_info/', api.v2.views.additional_info),
]
发布于 2018-01-26 09:28:37
Viewset
将多个视图合并到同一个类中。例如,您可以让它为您的某个Django模型提供CRUD api。
我推荐阅读http://www.django-rest-framework.org/api-guide/viewsets/
您可以在路由器中注册Viewset
。我将为视图的每个视图生成一个url。
class UserViewSet(viewsets.ModelViewSet):
"""
A viewset for viewing and editing user instances.
"""
serializer_class = UserSerializer
queryset = User.objects.all()
在urls.py中
from myapp.views import UserViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'users', UserViewSet, base_name='user')
urlpatterns = [
...
url(r'^', include(router.urls))
]
如果打印router.urls
for url in router.urls: print(url)
您将看到类似如下的内容:
<RegexURLPattern user-list ^ users/$>
<RegexURLPattern user-list ^ users\.(?P<format>[a-z0-9]+)/?$>
<RegexURLPattern user-detail ^ users/(?P<pk>[^/.]+)/$>
<RegexURLPattern user-detail ^ users/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$>
它显示了视图集的每个视图的url。
您也可以为REST API使用常规的View
。http://www.django-rest-framework.org/api-guide/views/可以像任何常见的Django视图一样添加到你的urls中。
我希望它能帮上忙
发布于 2018-01-26 13:29:03
我相信你需要显式声明你想要显示的urls:
这是我在我的一个项目中做的:
urlpatterns = [
# Your stuff: custom urls includes go here
url(r'^api/$', api_root, name='api-root'),
]
@api_view(['GET'])
@permission_classes((IsAdminUser, ))
def api_root(request, format=None):
return Response({
'apples': reverse('my-api:oranges-all'),
'oranges': reverse('my-api:oranges-list'),
})
https://stackoverflow.com/questions/48457744
复制