Django,在 html 中为空文本字段呈现斜体的最佳方法
Django, best way to render italics in html for empty text field
我在模型中有一个名为 notes
的字段。如果该字段为空,我想输出 'No notes' 并且我想用斜体来做。您可以使用 models.py
中的 get 命令将文本设置为 'No Notes'
def get_notes(self):
if len(self.notes) == 0:
return "No notes"
return self.notes
如何让 html 呈现为文本 'No notes' 的斜体。
Html:
<h6>Your Notes: </h6>
<p>{{ object.get_notes }}</p>
如果你渲染 HTML
如果您呈现 HTML,我只会将 "fallback" 消息添加到模板。您可以使用 default
模板过滤器 :
{{ object.<b>notes | default:"<i>No notes</i>"</b> }}
这种用法的优点是 - 如果另一个模板应呈现另一条消息,或者斜体字不适合 - 您可以决定使用其他内容。此外,模板对于内容的呈现方式相当明确。
请注意,我们在这里使用 .notes
,而不是添加某种占位符的 .get_notes
函数。
如果是表单域
我建议 "No notes"
是 而不是 CharField
的内容。您如何区分 "No notes"
与显式写入 "No notes"
的用户?如果你以后改变主意怎么办?然后你必须重写表单等中的所有逻辑。但是你可以使用 placeholder
,并为此添加相关标记:
class SomeForm(forms.Form):
notes = forms.CharField(
label='notes',
widget=forms.TextInput(attrs={<b>'placeholder': 'No notes'</b>})
)
然后您可以使用 .css
样式表执行标记:
input::<b>placeholder</b> {
font-style: <b>italic</b>;
}
改用get_notes
如果你坚持使用get_notes
,你可以先简化你的功能,然后你可以使用mark_safe(..)
渲染原始 html:
<b>from django.utils.safestring import mark_safe</b>
def get_notes(self):
return self.notes<b> or mark_safe('<i>No notes</i>')</b>
我在模型中有一个名为 notes
的字段。如果该字段为空,我想输出 'No notes' 并且我想用斜体来做。您可以使用 models.py
def get_notes(self):
if len(self.notes) == 0:
return "No notes"
return self.notes
如何让 html 呈现为文本 'No notes' 的斜体。
Html:
<h6>Your Notes: </h6>
<p>{{ object.get_notes }}</p>
如果你渲染 HTML
如果您呈现 HTML,我只会将 "fallback" 消息添加到模板。您可以使用 default
模板过滤器 :
{{ object.<b>notes | default:"<i>No notes</i>"</b> }}
这种用法的优点是 - 如果另一个模板应呈现另一条消息,或者斜体字不适合 - 您可以决定使用其他内容。此外,模板对于内容的呈现方式相当明确。
请注意,我们在这里使用 .notes
,而不是添加某种占位符的 .get_notes
函数。
如果是表单域
我建议 "No notes"
是 而不是 CharField
的内容。您如何区分 "No notes"
与显式写入 "No notes"
的用户?如果你以后改变主意怎么办?然后你必须重写表单等中的所有逻辑。但是你可以使用 placeholder
,并为此添加相关标记:
class SomeForm(forms.Form):
notes = forms.CharField(
label='notes',
widget=forms.TextInput(attrs={<b>'placeholder': 'No notes'</b>})
)
然后您可以使用 .css
样式表执行标记:
input::<b>placeholder</b> {
font-style: <b>italic</b>;
}
改用get_notes
如果你坚持使用get_notes
,你可以先简化你的功能,然后你可以使用mark_safe(..)
渲染原始 html:
<b>from django.utils.safestring import mark_safe</b>
def get_notes(self):
return self.notes<b> or mark_safe('<i>No notes</i>')</b>