嘿,它是一個星期的Django回到這裏,所以我不介意,如果這個問題是愚蠢的,但我在搜索計算器和沒有運氣谷歌。Django模板分辨率可變
我有一個叫Term的簡單模型(試圖爲我的新聞模塊實現標籤和類別),我有一個名爲taxonomy_list的模板標籤,它應該輸出分配給一個文章的所有術語,用逗號分隔鏈接。現在,我的術語模型沒有永久鏈接字段,但它從我的視圖中獲取並傳遞給模板。模板內的永久鏈接值看起來很好,但不會加載到我的模板標籤中。
爲了說明這一點我有位從我的代碼。這就是所謂的taxonomy_list我的自定義模板標籤:
from django import template
from juice.taxonomy.models import Term
from juice.news.models import Post
register = template.Library()
@register.tag
def taxonomy_list(parser, token):
tag_name, terms = token.split_contents()
return TaxonomyNode(terms)
class TaxonomyNode(template.Node):
def __init__(self, terms):
self.terms = template.Variable(terms)
def render(self, context):
terms = self.terms.resolve(context)
links = []
for term in terms.all():
links.append('<a href="%s">%s</a>' % (term.permalink, term.name))
return ", ".join(links)
這裏是我的單篇文章的觀點:
# single post view
def single(request, post_slug):
p = Post.objects.get(slug=post_slug)
p.tags = p.terms.filter(taxonomy='tag')
p.categories = p.terms.filter(taxonomy='category')
# set the permalinks
for c in p.categories:
c.permalink = make_permalink(c)
for t in p.tags:
t.permalink = make_permalink(t)
return render_to_response('news-single.html', {'post': p})
這是我做我的模板中,說明訪問的類別有兩種方法:
Method1: {% taxonomy_list post.categories %}
Method2: {% for c in post.categories %}{{c.slug}} ({{c.permalink}}),{% endfor %}
有趣的是,方法2號工作正常,但方法1號說,我.permalink場是不確定的,這可能意味着,可變分辨率不這樣做一我期待,因爲「額外」永久鏈接字段被排除在外。
我想,也許該變量是不承認的領域,因爲它未在模型中定義的,所以我嘗試爲其分配模型內的「臨時」值,但這並沒有幫助。方法1在鏈接中包含「臨時」,而方法2正常工作。
任何想法?
謝謝!
啊,我們走了。我知道我錯過了一些東西。非常感謝丹尼爾! – kovshenin 2010-10-18 11:08:48