> 백엔드 개발 > 파이썬 튜토리얼 > Django가 프런트엔드 데이터를 받아들이는 여러 가지 방법 요약

Django가 프런트엔드 데이터를 받아들이는 여러 가지 방법 요약

黄舟
풀어 주다: 2016-12-15 09:29:48
원래의
2138명이 탐색했습니다.

배경

테스트 툴박스 작성 중간에 오늘 프론트엔드와 백엔드 데이터 상호작용에 문제가 발생했으니 함께 정리해보겠습니다.

환경

------------------------- --- -----

버전 관련

운영 체제: Mac OS X EI Caption

Python 버전: 2.7

IDE: PyCharm

Django: 1.8.2

---------------------- ---------------------

참고: 저는 Get 메소드인 POST를 테스트했습니다.

문자 유형

문자 유형 데이터를 비교적 쉽게 얻을 수 있는 방법은 다음과 같습니다.

sendData = {
  "exporttype": exporttype,

  "bugids": bugids,

  "test": JSON.stringify({"test": "test"})

};
로그인 후 복사

Django의 백엔드에서는 이 데이터를 정상적으로 가져오려면exporttype = request.GET.get("exporttype")

을 사용하세요.

참고: Python2.7에서는 데이터가 유니코드로 인코딩되어 있습니다. 사용하려면 때로는 str을 변환해야 합니다.

결과 예:

Excle < type 'unicode'>

배열 유형

배열 유형 데이터를 가져옵니다. 문자열 데이터를 가져오는 방법을 사용하면 결과는 None이 됩니다. 다음 방법을 사용해야 합니다.

bugids = request.GET.getlist("bugids[]")

이 방법으로 얻은 데이터는 배열 유형입니다.

참고: 가져온 배열의 요소는 유니코드로 인코딩되어 있으며 특정 시점에 트랜스코딩해야 합니다.

결과 예:

•전달된 URL

[14/Jul/2016 11:00:41]"GET /testtools/exportbug/?exporttype=Excle&bugids%5B%5D=102&bugids%
로그인 후 복사

• 확보한 데이터

[u&#39;102&#39;, u&#39;101&#39;, u&#39;100&#39;, u&#39;99&#39;, u&#39;98&#39;, u&#39;97&#39;, u&#39;96&#39;, u&#39;95&#39;, u&#39;94&#39;, u&#39;93&#39;, u&#39;92&#39;, u&#39;91&#39;, u
로그인 후 복사

문자형

문자형 데이터는 실제로는 문자열 데이터로 간주할 수 있다. 해당 문자열을 얻은 후 JSON 모듈을 사용하여 형식을 지정하면 됩니다.

프런트 엔드의 경우 문자 데이터를 전달하는 일반적인 방법은 JSON 데이터를 전달하는 것이므로 사용되는 방법은 다음과 같습니다.

"test": JSON.stringify({"test": "test"} )

결과 예:

{"test":"test"} <'unicode' 입력>

관련 소스 코드

•Get 메소드

Get 메소드는 wsgi의 메소드입니다.

def GET(self):
    # The WSGI spec says &#39;QUERY_STRING&#39; may be absent.
    raw_query_string = get_bytes_from_wsgi(self.environ, &#39;QUERY_STRING&#39;, &#39;&#39;)
    return http.QueryDict(raw_query_string, encoding=self._encoding)
로그인 후 복사

최종 반환은 http.QueryDict(raw_query_string, 인코딩=self._encoding)http의 원본 데이터, QueryDict는 MultiValueDict에서 상속됩니다. , 따라서 MultiValueDict를 직접 볼 수 있습니다.

•MultiValueDict

사실 소스코드는 어렵지 않아 보입니다.

def get(self, key, default=None):
    """
    Returns the last data value for the passed key. If key doesn&#39;t exist
    or value is an empty list, then default is returned.
    """
    try:
      val = self[key]
    except KeyError:
      return default
    if val == []:
      return default
    return val
  
  def getlist(self, key, default=None):
    """
    Returns the list of values for the passed key. If key doesn&#39;t exist,
    then a default value is returned.
    """
    try:
      return super(MultiValueDict, self).__getitem__(key)
    except KeyError:
      if default is None:
        return []
      return default
  
  def __getitem__(self, key):
    """
    Returns the last data value for this key, or [] if it&#39;s an empty list;
    raises KeyError if not found.
    """
    try:
      list_ = super(MultiValueDict, self).__getitem__(key)
    except KeyError:
      raise MultiValueDictKeyError(repr(key))
    try:
      return list_[-1]
    except IndexError:
      return []
로그인 후 복사

getlist 메소드는 모든 데이터를 통합하여 반환하는 메소드입니다.

위의 Django가 프런트엔드 데이터를 받아들이는 여러 방법에 대한 요약은 모두 편집자가 공유한 내용입니다. 더 많은 관련 기사를 보려면 PHP 중국어를 참고하시기 바랍니다. 홈페이지(www.php.cn)!

.


관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿