2

在views.py 中,我从特定用户那里检索推文,然后将其显示在模板中,这很有效。

但是,它只是原始文本,即链接不可点击,问题是使它们可点击的最佳方法是什么?

注意 1:我所指的链接可以是任何链接,但最有可能是 Instagram 链接

注意 2:如果可能的话,我什至希望标签是可点击的。

view.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>
4

2 回答 2

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_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)
于 2013-08-27T16:07:04.730 回答
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>

于 2013-08-27T15:24:29.023 回答