python - 在 generic.UpdateView 中传递上下文变量

标签 python django

我有一个模板以:

{% 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/

相关文章:

javascript - Django/Jquery/Javascript - 如何使用 url 参数预填充表单(自动填充表单)

python - 如何使用 google-app-engine-django 验证包含 App Engine 上文件的 Django 表单?

python - Django makemessages 将翻译后的字符串标记为模糊

Python Turtle 窗口每第二次运行就会崩溃

python - 在 python 数据框中选择具有相同顺序值的行?

python - 在 PythonAnywhere 上托管带有用户输入的简单脚本

mysql - Postgresql设置下一个要写入的ID

django - django模板标签是什么,用于获取结果集中返回的项目数?

python - 通过 bash 激活现有的 virtualenv

python - 如何使用 Python 读取 excel Unicode 字符