Django在模板中获取当前视图

时间:2013-06-19 20:53:46

标签: python django django-templates django-views

如何在Django 1.5的模板中获取当前视图的全名(my_app.views.index)?

对于表单,我在模板中有一个名为“view”的对象,我使用模板标记读取该对象。 但是使用DetailViews我没有看到任何类似的内容。

有没有办法使用自定义模板处理器?

由于

修改

情况1:

  1. 我检索一个页面,例如'/ foo / bar / 5 / edit'。
  2. Django将使用pk = 5调用'foo.views.editbar'。
  3. 此视图呈现模板'foo / bar_form.html'
  4. 情况2:

    1. 如果我检索'/ foo / bar / new'
    2. Django将调用'foo.views.newbar'
    3. 此视图呈现与上面相同的模板('foo / bar_form.html')
    4. 如何查看此模板'foo / bar_form.html',从哪个视图呈现? 结果应该是

      之一
      • 'foo.views.editbar'
      • 'foo.views.newbar'

3 个答案:

答案 0 :(得分:8)

在视图中输入

{% with request.resolver_match.view_name as view_name %}
    ...
    {{ view_name }}
    ...
{% endwith %}

答案 1 :(得分:1)

我不确定我是否完全理解这个要求,但请看一下inspect.stack

inspect.stack()[1][3]

答案 2 :(得分:-2)

只需set attribute即可在视图中请求对象:

setattr(request, 'view', 'app.views.func')

并在模板中检查:

{% if request.view == 'app.views.func' %}
    do something
{% endif %}

它对我有用。