Django - 减少视图中的重复上下文代码

时间:2017-11-16 13:41:06

标签: python django

假设我有一个类似的视图功能:

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}

有没有办法只编写一次上下文变量(假设两个条件都有一些类似的变量),但是不同的变量可以在他们自己的父条件下编写?

因此,变量C将属于if语句而D属于else,而变量A和B都可以写入一次,但同时适用于if和else语句....

注意每个条件的最后一个变量是如何不同的(c和d)

由于

2 个答案:

答案 0 :(得分:3)

它只是一个字典,所以设置在所有条件下保持一致的字典,然后在if / else逻辑中添加另一个字典。

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 :(得分:1)

是。定义变量dict一次,然后根据需要在单个if-block中更新它。

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)