>  기사  >  백엔드 개발  >  Django 도메인 간 요청 처리를 위한 샘플 코드

Django 도메인 간 요청 처리를 위한 샘플 코드

不言
不言원래의
2018-05-02 14:18:561345검색

이 글에서는 주로 Django 크로스 도메인 요청 처리에 대한 샘플 코드를 소개하는데, 이는 특정 참조 가치가 있습니다. 이제는 모든 사람과 공유합니다. 필요한 친구들이 참조할 수 있습니다.

Django가 Ajax 크로스 도메인 액세스를 처리합니다

사용 javascript Ajax 접속 중 다음 오류가 발생했습니다

오류 원인: JavaScript는 보안상의 이유로 크로스 도메인 액세스가 허용되지 않습니다. 다음 그림은 크로스 도메인 액세스에 대한 설명입니다.

개념:

여기서 언급된 js 크로스 도메인은 ajax를 사용하여 js 또는 python을 통해 서로 다른 도메인 간의 데이터 전송 또는 통신을 의미합니다. 다른 도메인에서 데이터를 요청하거나, js를 통해 페이지 내 다른 도메인의 프레임(Django)에서 데이터를 얻습니다. 프로토콜, 도메인 이름, 포트가 다르면 서로 다른 도메인으로 간주됩니다.

해결책

1. views.py 파일을 수정합니다.

다른 도메인이 Ajax를 통해 데이터를 요청할 수 있도록 views.py에서 해당 API 구현 기능을 수정합니다.

todo_list = [
  {"id": "1", "content": "吃饭"},
  {"id": "2", "content": "吃饭"},
]


class Query(View):
  @staticmethod
  def get(request):
    response = JsonResponse(todo_list, safe=False)
    response["Access-Control-Allow-Origin"] = "*"
    response["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS"
    response["Access-Control-Max-Age"] = "1000"
    response["Access-Control-Allow-Headers"] = "*"
    return response

  @staticmethod
  def post(request):
    print(request.POST)
    return HttpResponse()

2. django-cors-headers

GitHub 주소: https://github.com/ottoyiu/django-cors-headers

2.1. pip 설치 django-cors-headers

2.2 앱 추가

INSTALLED_APPS = (
  ...
  'corsheaders',
  ...
)

2.3 미들웨어 추가

MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10
  ...
  &#39;corsheaders.middleware.CorsMiddleware&#39;,
  &#39;django.middleware.common.CommonMiddleware&#39;,
  ...
]

2.4 이 사이트에 대한 교차 사이트 액세스를 허용하는 주소 구성

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
   &#39;localhost:63343&#39;,
)

# 默认值是全部:
CORS_ORIGIN_WHITELIST = () # 或者定义允许的匹配路径正则表达式.
CORS_ORIGIN_REGEX_WHITELIST = (&#39;^(https?://)?(\w+.)?>google.com$&#39;, )  # 默认值:
CORS_ORIGIN_REGEX_WHITELIST = ()

2.5 액세스 허용 방법 설정

CORS_ALLOW_METHODS = (
&#39;GET&#39;,
&#39;POST&#39;,
&#39;PUT&#39;,
&#39;PATCH&#39;,
&#39;DELETE&#39;,
&#39;OPTIONS&#39;
)

2.6 허용되는 헤더 설정:

기본값:

CORS_ALLOW_HEADERS = (
&#39;x-requested-with&#39;,
&#39;content-type&#39;,
&#39;accept&#39;,
&#39;origin&#39;,
&#39;authorization&#39;,
&#39;x-csrftoken&#39;
)

관련 권장 사항:

Django 로깅을 사용하여 로그를 인쇄하는 예

Django 프로젝트 실습에서 사용자 아바타 업로드 및 액세스

위 내용은 Django 도메인 간 요청 처리를 위한 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.