ホームページ >バックエンド開発 >Python チュートリアル >Django がフロントエンド データを受け入れるためのいくつかの方法のまとめ

Django がフロントエンド データを受け入れるためのいくつかの方法のまとめ

黄舟
黄舟オリジナル
2016-12-15 09:29:482053ブラウズ

背景

今日、テスト ツールボックスの作成の途中で、フロントエンドとバックエンドのデータのやり取りで問題が発生したので、一緒に解決しましょう。

環境

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

バージョン関連

オペレーティングシステム: Mac OS ------------------------ ------------------------- --

注: Get メソッドをテストしましたが、

文字型

も適用できます。

文字型データは比較的簡単に取得できます。フロントエンドの転送方法は次のとおりです。

sendData = {
  "exporttype": exporttype,

  "bugids": bugids,

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

};

Django のバックエンドでは、単に use exporttype = request.GET.get("exporttype")

します。このデータは通常どおり取得します。


注: Python2.7 では、データは Unicode でエンコードされています。これを使用したい場合は、str

結果の例:

Excle d814fee3852b8e9ec3cd2b6756634903

Array type

配列型の取得 文字列データを取得するメソッドを使用した場合、結果はNoneとなります。このメソッドを使用する必要があります:

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

この方法で取得されたデータは配列型です。

注: 取得された配列内の要素は Unicode でエンコードされているため、ある時点でトランスコードする必要があります。 結果の例:

•渡された 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

words 一般的な


文字データは実際には文字列データとして処理できます。対応する文字列を取得したら、JSON モジュールを使用してフォーマットするだけです。

フロントエンドの場合、渡す一般的なデータは JSON データを渡すことなので、使用されるメソッドは次のとおりです:

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

結果の例:

{"test":"test"} d814fee3852b8e9ec3cd2b6756634903

関連ソースコード

•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, encoding=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 中国語 Web サイト (www. php.cn)!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。