Django 关于 get_context_data()

耶尔干

我正在查看 django 源代码以了解super(ExampleView, self).get_context_data(**kwargs)以及为什么在我看来使用它:

class ExampleView(TemplateView):
    # ... atributes

    def get_context_data(self, **kwargs):
        context = super(ExampleView, self).get_context_data(**kwargs)
        context['key'] = 'value'

        return context

我发现:

class ContextMixin(object):
    """
    A default context mixin that passes the keyword arguments received by
    get_context_data as the template context.
    """

    def get_context_data(self, **kwargs):
        if 'view' not in kwargs:
            kwargs['view'] = self
        return kwargs

我无法弄清楚那种情况或kwargs['view'] = self什么

我已经尝试在get_context_data()没有默认条件的情况下覆盖

class ExampleView(TemplateView):
    # .. atributes

    def get_context_data(self, **kwargs):
        kwargs['key'] = 'value'

        return kwargs

它的工作原理与我编写的第一个代码相同。

牙龈

如果视图尚不存在,那两行代码将视图作为变量添加到上下文中。大多数人从不使用它,但你可以这样做:

class SomeView(TemplateView):
    template_name = "something.html"
    title = "My list of books"

    def books(self):       #custom method
        return Book.objects.all()

然后在您的模板中,您可以通过 view 变量引用 books 方法和 title 属性:

<h1>{{ view.title }}</h1>
<ul>
  {% for book in view.books %}
    <li>{{ book }}</li>
  {% enfor %}
<ul>

是的,请注意,在这种情况下,您甚至不需要自定义 get_context_data() 方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django DetailView get_context_data

Django的get_context_data错误

Django视图:get_context_data()vs get()

Django:将变量从get_context_data()传递到post()

Django-在get_context_data内过滤

如何使用 get_context_data 实现 Django 模板

Django覆盖get_context_data()不在模板中呈现

在Django中无法使用get_context_data

get_context_data 方法在 Django 中不起作用

如何在 Django 中使用 get_context_data()?

django CBV 中的 extra_context 和 get_context_data(**kwargs) 有什么区别

何时在Django中使用get,get_queryset,get_context_data?

Django:在get_context_data之后设置get_queryset

如何在Django中将2列求和get_context_data()

在通用detailview django中使用get_context_data重定向

Django:将kwargs参数从get_context_data()添加到ModelForm

Django DetailView-如何在get_context_data中使用'request'

使用get_context_data()方法在DetailView Django中检索依赖对象的列表

如何使用Django get_context_data按用户和按文章过滤评论?

Django ContextMixin'super'对象没有属性'get_context_data'

Django:在get_context_data中设置初始名称无法正常工作

Django:在基于类的视图中的get_context_data中放置更多上下文

如何访问 get_context_data RSS Feed django 2.2 中的数据

如何在Django View get_context_data中使用request.path?

Django UpdateView get_context_data 函数调用了两次

Django -> ListView -> get_context_data() -> Model.objects.filter(self.object)

优化Django查询以避免在使用详细信息视图并覆盖get_context_data时出现重复

将 get_context_data 方法添加到基于类的视图会破坏 django-tables2

关于 Django 视图的疑问