![](/img/trans.png)
[英]Wagtail, how do I populate the choices in a ChoiceBlock from a different model?
[英]Wagtail: How do I use RichTextField for string representation of a model?
我目前正在研究這個片段
@register_snippet
class Foo(models.Model):
body = RichTextField()
不知何故,我決定我需要定義__str__
以便我可以區分多個片段。 我相信使用body
內容作為字符串表示可能是一個好主意。 雖然,body 可以變得非常大,所以前 20 個字符應該可以。
認為這個任務是小菜一碟,我寫了這段代碼:
@register_snippet
class Foo(models.Model):
body = RichTextField()
def __str__(self):
return self.body[:20]
...這導致了丑陋的表示,例如<p>Quequeueueueue?</
和<p>FOO<br/></p>
。
我檢查了數據庫,發現標記存儲在數據庫中,這看起來很明顯。 雖然,我還是想知道。
在不使用 CPU-heavy HTML 解析器和解析整個body
情況下刪除 HTML 標記的方法是什么?
我相信正則表達式可以刪除一些標簽,但我如何處理</a
、 </blockqu
、 <
、 </
?
正如@Ian Price 在評論中所建議的那樣,如果您可以信任您正在處理的內容,那么正則表達式就可以正常工作。 例如:
import re
...
def __str__(self):
remove_tags = re.compile('<.*?>')
return re.sub(remove_tags, '', self.body)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.