18

以下はブール値の代わりに文字列を渡すようです。ブール値を渡すにはどうすればよいですか?

$.post('/ajax/warning_message/', {'active': false}, function() {
            return
       });
def warning_message(request):
    active  = request.POST.get('active')
    print active
    return HttpResponse()
4

3 に答える 3

57

Pythonコードでこれを行います:

active = True if request.POST.get('active') == 'true' else False

またはさらに簡単:

active = request.POST.get('active') == 'true'

get()関数は常に文字列を返すため、必要な実際の型に従って文字列を変換する必要があることに注意してください。

于 2012-05-21T22:50:54.610 に答える
7

ブール値をまたはとしてサーバーに送信できると仮定するとtrue/false1/0サーバー側では、次のように両方のケースを確認できますin

def warning_message(request):
    active = request.POST.get('active') in ['true', '1']
    print active
    return HttpResponse()

それ以外の場合、ブール値のみがtrue/false使用されることが確実な場合:

def warning_message(request):
    active = request.POST.get('active') == 'true'
    print active
    return HttpResponse()
于 2012-05-21T22:49:29.077 に答える
1

オスカーの答えは1ライナーであり、私はそれから何も取りたくないのですが、文字列を比較することはこれを行うための最もクリーンな方法ではありません。

simplejsonライブラリを使用するのが好きです。具体的には、 loadsはJavaScriptの自然なjson形式をネイティブPython型に解析します。したがって、この手法は、より幅広いケースに使用できます。

これにより、読みやすく、理解しやすく、保守しやすい統一されたコード手法が得られます。

ドキュメントから:

s(JSONドキュメントを含むstrまたはunicodeインスタンス)をPythonオブジェクトに逆シリアル化します。

import simplejson as sjson
valid_python_var = sjson.loads(json_str_to_parse)

または、パラメータの受け渡しを介して受信している可能性のあるシナリオでは、次のようになります。

var_to_parse = request.POST.get('name_of_url_variable') #get url param
    if var_to_parse is not None: #check if param was passed, not required
        parsed_var = sjson.loads(var_to_parse) # loads does the work

注:ライブラリが不要になったときに使用する場合は、常識を使用してライブラリをインポートしてください。

于 2018-06-04T07:14:44.613 に答える