0

テンプレートをレンダリングしているときに、パスではなく名前空間の値を指定して、テンプレートのURLを取得したいと思います。たとえば、これの代わりに:

return render(request, 'base/index.html', {'user':name})

私は次のことができるようになりたいです:

from django.shortcuts import render
from django.core.urlresolvers import reverse

return render(request, reverse('base:index'), {'user':name})

ただし、上記ではエラーが発生します。どうすればいいですか?関数に名前空間を与えて実際のパスを取得する方法はありますか?

拡張例:

--urls.py

from django.conf.urls.defaults import patterns, include, url

urlpatterns = patterns('',
    url(r'^', include('base.urls', namespace='base')),
)

-アプリベース:urls.py

from django.conf.urls.defaults import patterns, url

urlpatterns = patterns('base.views',
   url(r'^/?$', 'index', name='index'),
)

-アプリベース:views.py

from django.shortcuts import render
from django.core.urlresolvers import reverse

def homepage(request):
   '''
   Here instead of 'base_templates/index.html' i would like to pass
   something that can give me the same path but by giving the namespace
   '''
   return render(request, 'base_templates/index.html', {'username':'a_name'})

前もって感謝します。

4

1 に答える 1

0

テンプレート名はビュー内にハードコーディングされています。また、URLパターンからテンプレート名を渡すこともできます。詳細については、次を参照してください

from django.conf.urls.defaults import patterns, url

    urlpatterns = patterns('base.views',
       url(r'^/?$', 'index',
          {'template_name': 'base_templates/index.html'},
          name='index'),
       )

次に、ビューでテンプレート名を取得します。

def index(request, **kwargs):
    template_name = kwargs['template_name']
于 2013-03-27T14:51:46.877 に答える