3

次のようなデータベースから HTML コンテンツを取得するシステムがあります。

<p>This is some text</p>
<p>More text</p>
<p>Third Paragraph</p>

それを表示すると、ブログ投稿コンテンツの短い要約が表示されますが、現在、テキストを表示するときに、文字数の制限を 200 のような数に設定しているため、要約は次のようになります。

<p>This is some text</p>
<p>More text</

任意の場所でコンテンツを切り取って、Web ページの残りの部分を破壊する可能性があります。開いているすべてのタグを閉じるか、特定の数のトップレベルブロックのみを取得する方法は Python にありますか? たとえば、2 つのブロックは最初の 2 つの<p></p>タグになります。記事の短いプレビューを表示するときに、ワードプレスにこの機能があるのを見てきました。

4

1 に答える 1

5

テンプレートでそれを行う必要がある場合は、truncatewords-html をご覧ください: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#truncatewords-html

または、カスタム動作の使用が必要な場合は、ほとんどのユースケースで機能するはずの基本django.utils.text.Truncatorクラス ( https://github.com/django/django/blob/1.7/django/utils/text.py#L65 ) を使用できます。そのコードを参照して、自分で実装してください。

更新

直接使用する必要がある場合django.utils.text.Truncator、これはメソッドをインスタンス化して呼び出すwords()方法です (これはまさに truncatewords-html フィルターが行う方法です) 。

Truncator(value).words(length, html=True, truncate=' ...')
于 2013-04-06T05:29:50.133 に答える