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

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

黄舟
リリース: 2016-12-15 09:29:48
オリジナル
2210 人が閲覧しました

背景

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

環境

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

バージョン関連

オペレーティングシステム: 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

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"}

関連ソースコード

•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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート