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

我正在使用 Django CBV ,并对extra_context类属性和get_context_data(**kwargs)方法之间的差异感到困惑。尽管根据docs,您可以同时使用这两种方法,但是哪种方法更好?

有人可以帮助我解决问题吗???

我在DetailView子类中使用了此类属性,并且可以正常工作。

Django 2.2版本。

谢谢。

caiczy000 回答:django CBV中extra_context和get_context_data(** kwargs)有什么区别

我不知道您是否仍然对此有疑问,但是最近在生产环境中使用extract_context遇到了一个问题,特别是在使用Django 2.2和Python 3.6的AWS EC2实例上,我认为在extra_context上使用QuerySet将会像在开发环境中一样在生产环境中自动更新,但是如果您需要在上下文中进行QuerySet更新,则最好使用get_context_data。

如果需要固定值,则使用底线,否则请使用extra_context,否则请使用get_context_data。

,

它们都具有相同的功能,只是在get_context_data中要获取上一个数据,您应该调用super并更新该字典;因为您不想在上下文中丢失上一个数据。

但是extra_context将执行相同的操作,但无需调用super,您可以像TemplateView.as_view(extra_context={'title': 'Custom Title'})这样在url中调用它。

总而言之,extra_context只是速度更快,用更少的代码来更新CBV中的上下文数据。
同样要注释extra_context将用作属性,但是get_context_data是CBV的方法。

本文链接:https://www.f2er.com/3164559.html

大家都在问