在检索到的推文中点击链接

时间:2013-08-27 14:37:27

标签: python django api twitter hyperlink

在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>

2 个答案:

答案 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>