Django中视图和模板职责的划分

Django中视图和模板职责的划分,django,django-templates,django-views,django-template-filters,Django,Django Templates,Django Views,Django Template Filters,Twitter上有一个名为hashtags的功能,可以从消息中提取标签。 例如,在 "Hey #guys, I love #stackoverflow" #guys和#stackoverflow可以单击并引导他们自己的查询 我正在为培训构建一个类似的应用程序,我想知道何时何地在输出中插入链接 我抓取了所有最近的推文: def index(request): latest_tweets = Tweet.objects.all().order_by('-pub_date')[:5]

Twitter上有一个名为hashtags的功能,可以从消息中提取标签。
例如,在

"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 %}
{%用于tweets%中的tweet}
{{tweet.message}

{%endfor%}
但这当然只显示简单的消息,没有链接。
我希望将
消息
中的每个
#标记
替换为将查询字符串中的标记名传递到名为
by_tag
的视图的链接

插入
是否属于
视图.py
?那么,如果我后来决定这是一个AJAX链接呢?好的,看起来这是属于模板的。但是如何使用模板中的路由进行如此复杂的替换呢?我应该编写自定义模板筛选器吗?


仅供参考,
Tweet
在一个名为
tags
的字段中包含了它的
Tag
,我上周做了类似的事情,并编写了一个快速自定义程序来扫描文本,查找提及和hashtag,并将它们包装在链接中

在执行HTML标记/替换时,在模板级别这样做是有意义的

通常,视图执行路由逻辑,即获取url、检索和聚合必要的数据以及呈现模板

如果您需要在模型上执行任何相关逻辑(例如,与tweet进行比较),最好将其放在模型函数或模型管理器中,因为它是与您的模型和数据库相关联的逻辑

模板级中的任何逻辑通常都应该处理从视图中接收的数据的结构和显示

但有时,您可能希望在模板级别执行一些逻辑,以便在不同的视图中重用它(例如抓取前10个最流行的标记)。这是一个创建模板标记来执行逻辑的好时机(而且它也很好并且可重用)

无论如何,请将该代码放入:

yourapp/templatetags.py
在模板中:

{% for tweet in tweets %}
    <p>{{ tweet.message|twittify }}</p>
{% endfor %}
{%用于tweets%中的tweet}
{{tweet.message | twittefy}

{%endfor%}
感谢您的精彩解释和代码片段。现在我想知道:在模板中硬核应用程序链接可以吗?例如,在ASP.NET MVC中,我们调用
URL.Route('product','create')
,而不是像
/product/create/
那样指定URL,它读取路由表并按控制器和操作名给出URL。在django通常是怎么做的?(考虑到我希望链接通过_tag查看
名称
参数)是的,您可以获得该功能。如果要在视图或应用程序逻辑中查找URL,请使用反向功能:(),或者如果要在模板中实现相同的功能,请使用“URL”模板标记:()。如果你不能让它工作,打开一个新的问题,你将能够得到帮助这些链接都是我所需要的,我发誓我可以找到他们,如果我谷歌更努力。非常感谢你的帮助!