在views.py中,我从特定用户检索推文,然后在模板中显示推文。该推文有效。
但是,它只是原始文本,即链接不可点击,问题是使它们可点击的最佳方法是什么?
注1:我所指的链接可以是任何链接,但很可能是Instagram链接
注意2:如果可能的话,我甚至希望这些主题标签可以点击。
views.py中的代码
user = twitter.User
tweets = []
statuses = t.GetUserTimeline(user)
for s in statuses:
tweets.append(s.text)
HTML:
<div class="col2">
<ol class="ol_list">
<h4>Twitter</h4>
{% for tweet in tweets %}
<li>
<p>{{tweet}}</p>
</li>
{% endfor %}
</ol>
</div>
答案 0 :(得分:2)
我使用这样的代码做类似的事情:
def linkify(raw_message):
message = raw_message
for url in url_regex.findall(raw_message):
if url.endswith('.'):
url = url[:-1]
if 'http://' not in url:
href = 'http://' + url
else:
href = url
message = message.replace(url, '<a href="%s">%s</a>' % (href, url))
return message
url regex是
url_re = re.compile(r"""
[^\s] # not whitespace
[a-zA-Z0-9:/\-]+ # the protocol and domain name
\.(?!\.) # A literal '.' not followed by another
[\w\-\./\?=&%~#]+ # country and path components
[^\s] # not whitespace""", re.VERBOSE)
这个正则表达式更喜欢误报一些边缘词。它还匹配尾随.
。但是我稍后会删除它。哈希标记将需要另一个正则表达式来匹配它们。
类似的东西:
hashtag_re = re.compile(r"""
\# # a hashmark
[^\s]* # not whitespace repeated""", re.VERBOSE)
答案 1 :(得分:1)
您在问题中不清楚您指的是哪个链接。
如果链接在推文内,就像在推文中一样:
You should go to this site: example.com
然后,您很可能希望使用正则表达式来识别链接,然后在传递到模板之前将HTML拼接到推文中。
转过来:You should go to this site: example.com
进入:You should go to this site: <a href="http://www.example.com">example.com</a>
哈希标签可以用同样的方式完成。
转过来:Just walked down the street. #yolo
进入:Just walked down the street. <a href="https://twitter.com/search?q=%23yolo&src=hash">#yolo</a>