2011-12-18 1 views
1

このテンプレートタグ(djangosnippetsから)に渡すことができるビューであるview_categoryをどのように供給するかを考えようとしているうちに、私は立ち往生していません。また、このビュー/タグのように見えると思われるurls.pyは何ですか?Djangoビューの逆関数を与える方法を見つける

ソース(http://djangosnippets.org/snippets/475/#c4123):あなたのURLのconfで

from django.core.urlresolvers import reverse, NoReverseMatch 
from django.template import Library, Variable, TemplateSyntaxError, Node 

register = Library() 

class RelatedNode(Node): 
    def __init__(self, object_list, viewname): 
     self.object_list = Variable(object_list) 
     self.viewname = viewname 

    def render(self, context): 
     def node(object): 
      try: 
       reversed = reverse(self.viewname, args=[object.id]) 
      except NoReverseMatch: 
       return '<li>%s</li>' % object 

      return '<li><a href="%s">%s</li>' % (reversed, object) 

     def recursive(object): 
      if object.child_set.all(): 
       output.append('<ul>') 
       for object in object.child_set.all(): 
        output.append(node(object)) 
        recursive(object) 
       output.append('</ul>') 

     output = [] 
     for object in self.object_list.resolve(context): 
      if not object.parent: 
       output.append(node(object)) 
       recursive(object) 

     return '\n'.join(output) 

def related_linked_list(parser, token): 
    bits = token.contents.split() 
    if len(bits) != 3: 
     raise TemplateSyntaxError, "'%s' tag takes exactly 2 arguments" % bits[0] 
    return RelatedNode(bits[1], bits[2]) 

register.tag(related_linked_list) 

答えて

0

:あなたのタグのために

url(r'^some-category/(\d+)/$', some_category_view, name="my-category-view") 

、view_category == "私のカテゴリビュー"

...したがって、最終的には逆の呼び出しが呼び出されます。

reversed = reverse("my-category-view", args=[object.id])

+0

some_category_viewは何を返さなければならないのですか? – user955879

+0

これは通常のジャンゴビューです。 HttpResponseを返します。このスニペットはビューを逆にしてURLを取得し、URLへのリンクを作成します。 – jdi

関連する問題