创建视图 - 从模板访问success_url

时间:2014-09-10 13:27:34

标签: django django-class-based-views class-based-views

说我有:

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

由于

2 个答案:

答案 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__'