Django:从TemplateView访问变量值

时间:2016-09-12 10:49:40

标签: python django

说我有以下的网址映射到$passtome = resolve_kat(927); function otherFunction ($passtome) { #What you want to do... }

TemplateView

我认为在模板视图中url(r'^path/(?P<var1>\d+)/(?P<var2>\d+)/$', TemplateView.as_view('a_view.html')) 我可以访问a_view.htmlvar1的值,因为它们被捕获并提取到命名参数中:

var2

但是,访问<!-- a_view.html --> <p>var1 value = {{ var1 }}</p> <p>var2 value = {{ var2 }}</p> 时,这些值为空。为什么?我怎么才能访问它们呢?我需要一个明确的观点吗?

2 个答案:

答案 0 :(得分:1)

我认为这样的事情应该有用。

更改urls.py以使用命名视图:

url(r'^path/(?P<var1>\d+)/(?P<var2>\d+)/$', YourNamedView.as_view('a_view.html'))

创建一个TemplateView并让它抓住你的变量并将其添加到上下文中:

class YourNamedView(TemplateView):
    template_name = 'a_view.html'

    def get_context_data(self, **kwargs):
        context = super(YourNamedView, self).get_context_data(**kwargs)
        context.update({
            'var1': self.kwargs.get('var1', None),
            'var2': self.kwargs.get('var2', None),
        })
        return context

并在模板中:

<h1>{{ var1 }} {{ var2 }}</h1>

答案 1 :(得分:0)

从模板中,您可以访问代表已解析网址的ResolverMatch实例

<p>var1 value = {{ request.resolver_match.kwargs.var1 }}</p>
<p>var2 value = {{ request.resolver_match.kwargs.var2 }}</p>