06 rest - framework 의 관계 와 하이퍼링크 API
7722 단어 apirest-frameworkdjango
1. 내용
2. api 루트 노드 의 정지점 만 들 기
# snippets users , @api_view 。
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.reverse import reverse
@api_view(['GET'])
def api_root(request, format=None):
return Response({
'users': reverse('user-list', request=request, format=format),
'snippets': reverse('snippet-list', request=request, format=format)
})
3. 하 이 라이트 텍스트 의 정지점 만 들 기
JSON 데 이 터 를 되 돌려 주 는 것 외 에 rest 는 두 가지 HTML 렌 더 링 방식 을 제공 합 니 다. - 하 나 는 템 플 릿 templates 렌 더 링 을 이용 하고 다른 하 나 는 pre - rendered 렌 더 링 - + 주의 +: 하 이 라이트 텍스트 를 만 들 때 우리 가 호출 할 수 있 는 일반적인 보기 함수 가 존재 하지 않 습 니 다. - 다른 하 나 는 대상 인 스 턴 스 를 되 돌려 줄 수 없습니다.대상 인 스 턴 스 의 특정한 속성 을 되 돌려 줍 니 다. - 그래서 우 리 는 기본 적 인 보기 함 수 를 이용 하여 자신의 'get' 방법 을 만 듭 니 다.
from rest_framework import renderers
from rest_framework.response import Response
class SnippetHighlight(generics.GenericAPIView):
queryset = Snippet.objects.all()
# , HTML
renderer_classes = (renderers.StaticHTMLRenderer,)
def get(self, request, *args, **kwargs):
snippet = self.get_object()
return Response(snippet.highlighted)
url 경로 추가
#
url(r'^$', views.api_root),
#
url(r'^snippets/(?P[0-9]+)/highlight/$' , views.SnippetHighlight.as_view()),
4. 하이퍼링크 인터페이스
존재 하 는 실체 간 의 관 계 를 처리 하 는 데 다음 과 같은 몇 가지 다른 방식 이 있다.
class SnippetSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
# :views_name, html, json,
highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html')
class Meta:
model = Snippet
fields = ('url', 'id', 'highlight', 'owner',
'title', 'code', 'linenos', 'language', 'style')
class UserSerializer(serializers.HyperlinkedModelSerializer):
snippets = serializers.HyperlinkedRelatedField(many=True, view_name='snippet-detail', read_only=True)
class Meta:
model = User
fields = ('url', 'id', 'username', 'snippets')
5. URL 모드 이름
from django.conf.urls import url, include
from rest_framework.urlpatterns import format_suffix_patterns
from snippets import views
# API endpoints
urlpatterns = format_suffix_patterns([
url(r'^$', views.api_root),
url(r'^snippets/$',views.SnippetList.as_view(),name='snippet-list'),
url(r'^snippets/(?P[0-9]+)/$' ,views.SnippetDetail.as_view(),name='snippet-detail'),
url(r'^snippets/(?P[0-9]+)/highlight/$' ,views.SnippetHighlight.as_view(),
name='snippet-highlight'),
url(r'^users/$',views.UserList.as_view(),name='user-list'),
url(r'^users/(?P[0-9]+)/$' ,views.UserDetail.as_view(),name='user-detail')
])
# Login and logout views for the browsable API
urlpatterns += [
url(r'^api-auth/', include('rest_framework.urls',
namespace='rest_framework')),
]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기상청 API를 사용한 비오는 날만 알려주는 LINE Notify 작성지금까지 기상청의 기상 데이터는 스크래핑을 하는 것으로 밖에 얻을 수 없었습니다만, 1개월 정도 전에 기상청 HP가 API화했다(엄밀한 API가 아닌 것 같다)라고 하는 것으로 조속히 사용해 가려고 생각합니다. 이번...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.