如何从模板中使用django通用视图(CreateView vs UpdateView)进行创建或更新?

时间:2014-06-11 20:47:20

标签: django django-templates django-generic-views

我正在使用django的通用视图为我的CreateViewUpdateView共享相同的模板。我想在我使用CreateView时使用UpdateView和“更新”时,我的模板中的“提交”按钮说“添加”。我的模板中是否有任何方法可以区分使用哪个视图(CreateView vs UpdateView)?

我知道我可以使用template_name_suffix使用单独的模板,并将常用内容放在单独的包含或其他内容中,但只是想知道是否有办法在不创建单独模板的情况下执行此操作。

2 个答案:

答案 0 :(得分:9)

创建新对象时,object在呈现模板时始终为None。您可以检查模板中是否存在{{ object }}

{% if object %}Update{% else %}Add{% endif %}

答案 1 :(得分:2)

覆盖get_context_data并在视图中添加标记:

def get_context_data(self, **kwargs):
    context = super(YourClass, self).get_context_data(**context)
    context['create_view'] = True
    return context

将YourClass更改为您的班级视图名称

然后在您的模板中,您可以:

{% if create_view %}