Я не уверен насчет обработки внутри самого шаблона без создания собственного фильтра, но вы можете обработать его в контроллере с помощью python?В базовой форме с регулярным выражением:
import re
user_pattern = re.compile('(\s|^)(@)(\w+)(\s|$)')
tweet = 'Hey @pssdbt, thats not what I wanted!'
tweet = user_pattern.sub('\1<a href="http://www.twitter.com/\3">\2\3</a>\4', tweet)
Что должно привести к:
'hey <a href="http://www.twitter.com/pssdbt">@pssdbt</a>, thats not what i wanted!'
Тот же метод применим и к хэштегам.Хотя я не думаю, что в javascript было бы слишком сложно позаботиться об этом.
Обновление / Как пользовательский фильтр:
Согласно http://docs.djangoproject.com/en/dev/howto/custom-template-tags/ вы просто создадите файл с именем что-то вроде your_app / templatetags / twittify.py
В этом файле добавьте:
from django import template
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe
import re
register = template.Library()
@register.filter(name='twittify')
def twittify(tweet, autoescape=None):
tweet = conditional_escape(tweet)
user_pattern = re.compile('(\s|^)(@)(\w+)(\s|$)')
tweet = user_pattern.sub('\1<a href="http://www.twitter.com/\3">\2\3</a>\4', tweet)
return mark_safe(tweet)
twittify.needs_autoescape = True
Тогда в ваших шаблонах вы сможетеиспользуйте что-то вроде этого (если предположить, что это выглядит примерно так):
<ul id="tweets">
{% for tweet in tweets %}
<li>{{ tweet | twittify }}</li>
{% endfor%}
</ul>
Я никогда не играл с пользовательскими фильтрами раньше, но, надеюсь, это, по крайней мере, направит вас в правильном направлении.