2016-11-20 15 views
0

Linuxマシンでdjango 1.10.2とpython 3.5.2を使用しています。Django QueryDict OPTIONALリクエストメソッド

私のDjangoアプリはクライアントからリクエストを受け取ります。要求メソッドは、タイプOPTIONALとして識別されます。私はDjangoが自動的にPOSTとGETリクエストのQueryDictを作成することを理解しています。では、GETやPOST Typeではないリクエストの内容をどのように取得するのですか?どのようにしてこのような要求や他のタイプの要求のQueryDictを作成できますか?

デバッグの目的で、httpリクエスト全体を印刷することはできますか?ボディとヘッダー?私はその要求の内容を見たいと思います。

ありがとうございます。

答えて

0

パラメータは、あなたがこの方法を使用して、通常のPythonの辞書に変換することができます request.bodyに格納されています。

def retrieve_parameters_for_optional(request): 
    parameters = {} 
    params_as_string = request.body.decode("utf-8") 
    for param in params_as_string.split("&"): 
     if "=" in param: 
      key, value = param.split("=", 1) 
      parameters[key] = value 
    return parameters 

それは、 不変ですが、あなたは、例えば、要求のためにコピーすることができますので、あなただけのQueryDictを作成することができます。そのコンテンツを取得してクリア()します。その後

dict_of_parameters = retrieve_parameters_for_optional(request) 
your_query_dict = request.GET.copy() 
your_query_dict.clear() 
for key, value in dict_of_parameters.items(): 
    your_query_dict[key] = value 

あなたは、たとえばrequest.GETにごquery_dictを割り当て、ちょうど通常のGETリクエストのような要求の処理を続行することができます。

+0

ボディがフォームデータとしてエンコードされている場合、 'parameters = QueryDict(request.body、encoding = 'utf-8')'を実行するだけで、 'request.GET'をコピーしてクリアする必要はありません。 – knbk

関連する問題