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>"には、ブラウザでレンダリングされない文字が含まれています。視覚化ではなく、ソースコードをフォーマットしています。

15個の非表示の文字(つまり)とスラッグstr(row.the_team).ljust(50)があるため、に置き換えます。str(row.the_team).ljust(50+len(row.slug)+15)<a href=""></a>

更新:いくつかを削除することをお勧めします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 に答える