假设我有一个类似的视图功能:
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)
由于
答案 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)