有一個在Twitter的一個功能叫做從郵件中提取標籤#標籤。
例如,在劃分視圖與模板之間的責任在Django
"Hey #guys, I love #stackoverflow"
#guys
和#stackoverflow
是可以點擊的,並導致自己的查詢。
我正在構建一個類似的應用程序進行培訓,我不知道何時何地在輸出中實際注入鏈接?
我抓住所有最近的鳴叫:
def index(request):
latest_tweets = Tweet.objects.all().order_by('-pub_date')[:5]
return render_to_response('index.html',
{ 'tweets': latest_tweets },
context_instance=RequestContext(request)
)
並且以塊爲我呈現:
{% for tweet in tweets %}
<p>{{tweet.message}}</p>
{% endfor %}
但這當然只是表明普通消息,沒有鏈接。
我想在每個message
到#tag
在查詢字符串到一個名爲by_tag
視圖傳遞標籤名稱的鏈接來代替。
是否插入<a href="...">
s屬於views.py
?那麼,如果我決定以後這是一個AJAX鏈接?好吧,看起來這屬於模板。但我怎麼做,從一個模板路由這樣一個複雜的更換?我應該寫一個自定義模板過濾器嗎?
僅供參考,Tweet
包含它的Tag
在一個名爲tags
的字段中。
感謝您提供精彩的解釋和代碼片段。現在我想知道:是否可以將模板中的應用程序鏈接硬化?例如,在ASP .NET MVC中,而不是像'/ product/create /'那樣指定URL,我們調用Url.Route('Product','Create')'它讀取路由表並給出控制器和動作名稱的URL。這通常在django中完成? (考慮到我希望鏈接到'name'參數的'by_tag'視圖) – 2011-06-14 00:58:59
是的,你可以得到這個功能。如果您想在視圖或應用程序邏輯中查找URL,請使用反向函數:(https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse)或者如果您要在模板中使用「url」模板標記實現相同的功能:(https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#url)。如果你不能工作,打開一個新的問題,你將能夠得到幫助 – 2011-06-14 01:11:01
這些鏈接都是我需要的,我發誓我可以找到他們,如果我更難搜索。非常感謝你的幫助! – 2011-06-14 01:12:59