在Django中缩进SelectField中的文本

在Django中缩进SelectField中的文本,django,select,space,indentation,Django,Select,Space,Indentation,我正在尝试缩进多选字段中的文本 def __init__(self): super(RegisterFull,self).__init__() sectorList = Sector.objects.all() sArray = [] for s in sectorList: sArray.append((s.id," "+s.__unicode__())) self.fields["subsector"].choices = sArray

我正在尝试缩进多选字段中的文本

def __init__(self):
    super(RegisterFull,self).__init__()
    sectorList = Sector.objects.all()    

sArray = []    
for s in sectorList:    
    sArray.append((s.id,"    "+s.__unicode__()))
self.fields["subsector"].choices = sArray
我已经试过这个了

sArray.append((s.id,"  "+s.__unicode__()))
但是,我无法实现我想要的,因为“&”字符被&(当然)替换,并且空的空间被修剪。为什么,当创建html页面时

你能建议一条路吗


谢谢。

我建议使用层叠样式表(CSS)来格式化您想要的字段。HTML应该主要关注文档的布局,而CSS可以对格式进行微调。因此,在表单的小部件中添加一个类

e、 g

class UserForm(forms.Form):
    name = forms.CharField(widget = forms.TextInput(attrs={'class':'indented'}))
然后在模板顶部添加CSS(或移动到单独的样式表)

编辑:使您的解决方案正常工作(使用


我建议使用层叠样式表(CSS)来格式化您想要的字段。HTML应该主要关注文档的布局,而CSS可以对格式进行微调。因此,在表单的小部件中添加一个类

e、 g

class UserForm(forms.Form):
    name = forms.CharField(widget = forms.TextInput(attrs={'class':'indented'}))
然后在模板顶部添加CSS(或移动到单独的样式表)

编辑:使您的解决方案正常工作(使用


谢谢你的回复,但我想使用multipleechoicefield。列表中有几个项目,并非所有项目都缩进。我想确定服务器端的目标类,并将它们呈现为html。@user763256:我仍然建议使用CSS解决方案,根据服务器端的条件,可能会将CSS类更改为缩进或不缩进。HTML将连续的空格呈现为单个空格。您可以使用不间断空格
,但它不雅观,您必须正确地转义/取消转义html,确保其标记为安全,等等@user763256:请参阅我答案的底部,在这里您
标记
以使其在模板中呈现为unicode。小心使用
mark_safe
,以免自己容易受到CSRF攻击。例如,如果用户可以创建选项,比如指定出现在多选文本中的外键字段,他们可以链接到javascript代码,这些代码可以做一些你不想做的事情。我想当你建议“文本缩进”时,我一开始误解了。我将“文本索引”样式应用于选项,效果非常好!谢谢你的回复,但我想使用multipleechoicefield。列表中有几个项目,并非所有项目都缩进。我想确定服务器端的目标类,并将它们呈现为html。@user763256:我仍然建议使用CSS解决方案,根据服务器端的条件,可能会将CSS类更改为缩进或不缩进。HTML将连续的空格呈现为单个空格。您可以使用不间断空格
,但它不雅观,您必须正确地转义/取消转义html,确保其标记为安全,等等@user763256:请参阅我答案的底部,在这里您
标记
以使其在模板中呈现为unicode。小心使用
mark_safe
,以免自己容易受到CSRF攻击。例如,如果用户可以创建选项,比如指定出现在多选文本中的外键字段,他们可以链接到javascript代码,这些代码可以做一些你不想做的事情。我想当你建议“文本缩进”时,我一开始误解了。我将“文本索引”样式应用于选项,效果非常好!
class UserForm(forms.Form):
    name = forms.CharField(widget = forms.TextInput(attrs={'style':'text-indent: 20px;'})).
from django.utils.safestring import mark_safe

def __init__(self):
    super(RegisterFull,self).__init__()
    sectorList = Sector.objects.all()    

    sArray = []    
    for s in sectorList:    
        sArray.append((s.id,mark_safe("    "+s.__unicode__())))
        self.fields["subsector"].choices = sArray