3

我正在使用 Django 创建一个用于记录足球队的网站,我有一个带有 CSS 等的“漂亮”显示,但作为备份/旧学校版本,我试图让代码将信息写入一个基本的 .html 文件正在使用 rjust、ljust 等来格式化文本。在下面的代码中,如果我删除链接代码,并且只显示团队名称的字符串,所有内容都正确排列。一旦我添加了链接的 HTML,尽管列没有对齐并且完全不正常。我做错了什么?

standings = Team.objects.filter(active=True).order_by('-wp')

output += '<pre>\n'  
output += '%s   %s   %s   %s\n' % (str('Rk').rjust(3), str('Team').ljust(50), str('W').rjust(2), str('L').rjust(2))
output += '%s   %s   %s   %s\n' % (str('--').rjust(3), str('----').ljust(50), str('-').rjust(2), str('-').rjust(2))

for row in mpi:
    the_team = "<a href=\"%s\">%s</a>" % (row.slug, row.name)
    output += '%s   %s   %s   %s\n' % (str(row.rank).rjust(3), str(the_team).ljust(50), str(row.won).rjust(2), str(row.lost).rjust(2))
output += '</pre>'
4

1 回答 1

0

该字符串"<a href=\"%s\">%s</a>"包含一些未在浏览器上呈现的字符,您正在格式化源代码,而不是可视化。

替换str(row.the_team).ljust(50)为,str(row.the_team).ljust(50+len(row.slug)+15)因为有 15 个不可见的字符(即<a href=""></a>)加上 slug。

更新:您可能想要删除一些str. 如果某个值已经是字符串,则无需再次(重新)将其转换为字符串。您也可以将长行拆分为较短的行。

output = '<pre>\n'
output += '%s %s%s%s\n' % ('Rk'.rjust(3), 'Team'.ljust(50), 'W'.rjust(2), 'L'.rjust(2))
output += '%s %s%s%s\n' % ('--'.rjust(3), '----'.ljust(50), '-'.rjust(2), '-'.rjust(2))

for team in teams:
    link = '<a href="%s">%s</a>' % (team.slug, team.name)
    link = link.ljust(50 + len(team.slug) + 15)
    rank, won, lost = str(team.rank).rjust(3), str(team.won).rjust(2), str(team.lost).rjust(2)
    output += '%s %s%s%s\n' % (rank, link, won, lost)
output += '</pre>'
print output
于 2012-09-27T20:23:50.280 回答