我有一个模板以:
{% extends load_template %}
在我看来,load_template 从这个条件中获取值
if user == 'guest':
load_template = 'damage/menus/menu.html'
else:
load_template = 'damage/menus/sidebarmenu.html'
我使用 generic.UpdateView 进行更新(返回错误,因为 load_template 变量没有值) 如何在此 UpdateView 中将值传递给此变量?
最佳答案
您可以修补 get_context_data
[Django-doc] :
from django.views.generic.detail import UpdateView
class MyUpdateView(UpdateView):
model = MyModel
def <b>get_context_data</b>(self, **kwargs):
context = super().get_context_data(**kwargs)
if <i>somecondition</i>:
load_template = 'damage/menus/menu.html'
else:
load_template = 'damage/menus/sidebarmenu.html'
<b>context['load_template'] = load_template</b>
return context
这将因此向上下文添加一个名为 load_template
的变量。请注意,此处未定义 user
。登录的用户是 self.request.user
。例如:
from django.views.generic.detail import UpdateView
class MyUpdateView(UpdateView):
model = MyModel
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if <b>not request.user.is_authenticated</b>:
load_template = 'damage/menus/menu.html'
else:
load_template = 'damage/menus/sidebarmenu.html'
context['load_template'] = load_template
return context
关于python - 在 generic.UpdateView 中传递上下文变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53471953/