我在模型中有一个名为notes
的字段。如果该字段为空,我想输出'没有备注'我想用斜体字来做。您可以将文字设置为“没有备注”。在models.py中使用get命令
def get_notes(self):
if len(self.notes) == 0:
return "No notes"
return self.notes
如何将html呈现为文本的斜体'没有注释'。
HTML:
<h6>Your Notes: </h6>
<p>{{ object.get_notes }}</p>
答案 0 :(得分:2)
如果您呈现HTML,我会添加&#34;后备&#34;仅发送给模板的消息。您可以使用default
模板过滤器:
{{ object.notes | default:"<i>No notes</i>" }}
这种用法的优点是 - 如果另一个模板应该呈现另一条消息,或者斜体不适合 - 您可以决定使用其他内容。此外,模板对如何呈现内容非常明确。
请注意,我们这里使用.notes
,而不是添加某种占位符的.get_notes
函数。
我建议"No notes"
不 CharField
的内容。您如何从明确撰写"No notes"
的用户那里榨取"No notes"
?如果你以后改变主意怎么办?然后你必须重写表格中的所有逻辑等。但是你可以使用placeholder
,并为此添加相关的标记:
class SomeForm(forms.Form):
notes = forms.CharField(
label='notes',
widget=forms.TextInput(attrs={'placeholder': 'No notes'})
)
然后,您可以使用.css
样式表执行标记:
input::placeholder {
font-style: italic;
}
get_notes
如果您坚持使用get_notes
,您可以先简化功能,此外,您可以使用 mark_safe(..)
来呈现原始 HTML:
from django.utils.safestring import mark_safe
def get_notes(self):
return self.notes or mark_safe('<i>No notes</i>')