说我有:
class MyCreate(CreateView):
template_name = 'template.html'
success_url = reverse_lazy('blabla')
form_class = MyForm
假设在我的模板中我想添加一个back
按钮。后面将引导我到success_url
的同一页面。我的解决方案是覆盖get_context_data
课程中的MyCreate
并将{'back': self.get_success_url()}
添加到context
。
其含义是我有更多CreateView,我必须为此ContextMixin
按钮创建back
。还有其他更简单的解决方案吗?比如直接在我的模板中访问success_url
?
由于
答案 0 :(得分:3)
正如我们在ContextMixin
的django(1.7)实现中所看到的,我们必须从模板中访问view
实例:
def get_context_data(self, **kwargs):
if 'view' not in kwargs:
kwargs['view'] = self
return kwargs
因此,您可以访问模板中的success_url:
{{ view.get_success_url }}
答案 1 :(得分:1)
在我使用 Django 1.10.3 的情况下,让它工作的方式是这样的:
视图:
from django.urls.base import reverse_lazy
class FooCreateView(CreateView):
success_url = reverse_lazy('name-of-some-view')
模板:
{{ view.success_url }}
尝试使用{{ view.get_success_url }}
导致:
AttributeError 'NoneType' object has no attribute '__dict__'