2017-11-16 2 views
2

が、私はそうのような表示機能を持っていると言う観点での重複コンテキストコードの削減:ジャンゴ -

def check_view(request): 
    if user.is_authenticated: 
     ... 
     return render(request, 'user-template.html', {'variablea':a, 'variableb':b, 'variablec':c} 
    else: 
     ... 
     return render(request, 'user-template.html', {'variablea':a, 'variableb':b, 'variabled':d} 

のみ、両方のためにそこにいくつかの類似した変数ことを考えると一度だけ(コンテキスト変数を書くためのどのような方法があります条件)、異なる変数はそれぞれの親条件の下で書くことができますか?

変数AとBの両方が一度書かれたが、ifとelse文の両方に適用することができるのに対し、だから、変数Cがどのように最後

注......、他にif文とDに属します各条件のための変数は異なる(CとD)

おかげで

答えて

3

それはただの辞書なので条件のすべてにわたって一貫性のあるものを設定し、あなたの場合/他に、他のものを追加論理。

def check_view(request): 
    context = {'variablea':a, 'variableb':b} 
    if user.is_authenticated: 
     context['variablec'] = c 
    else: 
     context['variabled'] = d 

    return render(request, 'user-template.html', context) 
1

はい。変数dictを一度定義し、必要であれば単一のifブロックで更新します。

def check_view(request): 
    variables = {'variablea': a, 'variableb': b, 'variablec': d} 
    if user.is_authenticated: 
     variables['variablec'] = c 
    return render(request, 'user-template.html', variables)