이것이 매우 기본적인 질문이라면 사과하지만 웹 개발에 비교적 익숙하지 않고 오늘 대부분의 문제에 대해이 문제를 해결해 왔습니다. 어떤 도움이라도 대단히 감사합니다.
1. 일반 클래스 기반 뷰
나는 정말로 여기 튜토리얼을 진행하고 내 기본 요구에 맞게 이것을 수정하고 다음과 같은 기본 뷰로 끝났습니다.
class EList(generics.ListCreateAPIView):
model = trax
#permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
serializer_class = TraxSerializer
이 API에 게시되는 것은 내가 구축하고있는 외부 서비스로, 교차 출처 리소스 공유 문제 (CORS)에 직면하고 있음을 의미합니다. 이상적으로는 헤더를 다음과 같이 설정해야 ["Access-Control-Allow-Origin"] = "*"
하지만이를 검색 한 후에도 이러한 일반 클래스 기반 뷰를 사용하여이를 수행하는 방법을 잘 모르겠습니다. 이것이 가능하고 내가 잘못된 곳을 찾고 있었습니까?
Tom이 가능하다고 언급 한이 게시물 을 찾았 지만 위의 관점에서이 작업을 수행 할 수 없어 다음 단계로 넘어갑니다.
2.) 클래스 기반 뷰
헤더 설정에 대해 좀 더 유연하게 시도하고 CORS에 대한 게시물에서 찾은 내용을 시도하기 위해 다음과 같이 표준 클래스 기반 뷰로 되돌리기로 결정했습니다.
class EList(APIView):
"""
List all snippets, or create a new snippet.
"""
def get(self, request, format=None):
trax = trax.objects.all()
serializer = TraxSerializer(trax, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = TraxSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
그러나 다음과 같은 오류가 발생합니다.
.model
또는.queryset
속성 이없는 뷰에는 DjangoModelPermissions를 적용 할 수 없습니다 .
여기에 응답 헤더를 설정해 볼 수있는 방법이 있습니까? 이것은 내 현재 권한이기도합니다.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
]
도움을 주셔서 감사합니다.
이 작업을 수행하려면 외부 웹 서비스가 원본 간 요청을 할 수 있도록 허용해야합니다. 가장 쉬운 방법은 django-cors-headers 패키지 를 설치 하고 다음 settings.py
과 같이 서비스 호스트 이름을 추가하는 것입니다.
CORS_ORIGIN_WHITELIST = (
'myservice.com',
)
myservice.com
ajax 호출을 수행하는 외부 서비스는 어디에 있습니까 ? 또한 이 설정 지침 을 따르는 것을 잊지 마십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다