Django消息格式化

时间:2017-06-08 18:14:23

标签: python django

有没有人理解这段代码以及如何将其更改为在同一行显示“sender write:message”而不是将其拆分为不同的行。如下图所示。我真的不明白为什么他们去了这种格式。

enter image description here

utils.py中的代码

def format_quote(sender, body):
    """
    Wraps text at 55 chars and prepends each
    line with `> `.
    Used for quoting messages in replies.
    """
    lines = wrap(body, 55).split('\n')
    for i, line in enumerate(lines):
        lines[i] = "> %s" % line
    quote = '\n'.join(lines)
    return ugettext(u"%(sender)s wrote:\n%(body)s") % {
        'sender': sender,
        'body': quote
    }

这是使用以下内容的消息传递应用:https://github.com/arneb/django-messages

它只是看起来很可怕,我可以弄清楚如何使它看起来更好,任何帮助都将非常感激!

1 个答案:

答案 0 :(得分:1)

这段代码只需要一些文本和发件人姓名:

  1. 包装它(它试图添加一些'\n来制作相当于文本的列而不是行)
  2. 制作行列表
  3. '> '添加到每一行
  4. 从列表
  5. 制作文字
  6. 'someone wrote:\n'添加到此文本
  7. 来自python的一些copypaste:

    >>> message = '1234567890 ' * 7
    >>> message
    '1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 '
    >>> sender = 'john'
    >>> sender
    'john'
    >>> wrap(message, 55)
    '1234567890 1234567890 1234567890 1234567890 1234567890\n1234567890 1234567890 '
    

    请注意\n

    >>> lines = wrap(message, 55).split('\n')
    >>> lines
    ['1234567890 1234567890 1234567890 1234567890 1234567890', '1234567890 1234567890 ']
    >>> for i, line in enumerate(lines):
    ...         lines[i] = "> %s" % line
    ...
    >>> lines
    ['> 1234567890 1234567890 1234567890 1234567890 1234567890', '> 1234567890 1234567890 ']
    >>> quote = '\n'.join(lines)
    >>> quote
    '> 1234567890 1234567890 1234567890 1234567890 1234567890\n> 1234567890 1234567890 '
    >>> ret = u"%(sender)s wrote:\n%(body)s" % {
    ...         'sender': sender,
    ...         'body': quote
    ...         }
    >>> print(ret)
    john wrote:
    > 1234567890 1234567890 1234567890 1234567890 1234567890
    > 1234567890 1234567890
    

    我认为这段代码本身不是问题。可能功能被称为一堆次,产生如此丑陋的输出。