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

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

黄舟
黄舟원래의
2016-12-15 09:29:482095검색

배경

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

환경

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

버전 관련

운영 체제: 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 2ba6561e11582ff8b3b8cb8d034e5f5a

배열 유형

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

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

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

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

결과 예:

•전달된 URL

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

• 확보한 데이터

[u'102', u'101', u'100', u'99', u'98', u'97', u'96', u'95', u'94', u'93', u'92', u'91', u

문자형

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

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

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

결과 예:

{"test":"test"} 7e85ee8fa6fb36ffd3a33282af6bf29f

관련 소스 코드

•Get 메소드

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

def GET(self):
    # The WSGI spec says 'QUERY_STRING' may be absent.
    raw_query_string = get_bytes_from_wsgi(self.environ, 'QUERY_STRING', '')
    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'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'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'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으로 문의하세요.