在django-crispy-forms

时间:2016-12-19 11:45:02

标签: django django-forms django-crispy-forms

我在表单中有以下字段:

<div class="form-group ">
 <div class="input-group">
  <input class="form-control" id="To" name="To" placeholder="To" type="text"/>
  <i class="glyphicon glyphicon-map-marker form-control-feedback"></i>
 </div>
</div>

看起来像

enter image description here

我正在尝试使用crispy-forms获得类似的结果。

我试过

self.helper.layout = Layout(
            Fieldset(
                'Title',
                PrependedText(
                    'From',
                    <i class="glyphicon glyphicon-map-marker"></i>
                    ),
                'To',
                'Date',
                ButtonHolder(
                    Submit('submit', 'Search', css_class='button white')
                )
            )
        )

但我得到SyntaxError: invalid syntax

是否可以在crispy-forms中添加图标作为PrependedText? 如果没有,有其他选择吗?

(编辑)

尝试

self.helper.layout = Layout(
                        Field(PrependedText('From', HTML('<span class="glyphicon glyphicon-map-marker"></span>')), placeholder='From'),
                        'To',
                        'Date',
                        ButtonHolder(
                            Submit('submit', 'Search', css_class='button white')
                        )
                    )

不会引发任何错误,但不会显示任何图标。

4 个答案:

答案 0 :(得分:3)

self.helper.layout = Layout(
   Div(HTML('''
       <div class="input-group"> 
         <input class="form-control" id="To" name="To" placeholder="To" type="text"/>
         <i class="glyphicon glyphicon-map-marker form-control-feedback"></i> 
       </div>'''), 
      class="form-group") 

答案 1 :(得分:1)

使用glyphicons的替代方法是使用类似的unicode符号:

self.helper.layout = Layout(
            Field(PrependedText('From', '&#x1f4cc'), placeholder='From'),
            Field(PrependedText('To', '&#x1f4cc'), placeholder='To'),
            Field(PrependedText('Date', '&#x1f4c5'), placeholder='Date'),
            FormActions(ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary')))
        )

问题在于,由于某种原因,砂金持有人无法正常工作......

placeholder text not visible

另请注意,将'&#xFE0E;'附加到unicode符号以强制它未按照建议here呈现给emojis,似乎不起作用。

答案 2 :(得分:1)

只需使用django的mark_safe帮助器:

from django.utils.safestring import mark_safe
Field(PrependedText('From',
                    mark_safe('<span class="glyphicon glyphicon-map-marker"></span>')),
      placeholder='From')

答案 3 :(得分:1)

这适用于占位符:

self.helper = FormHelper()
self.helper.form_show_labels = False

self.helper.layout = Layout(
    Field(
        PrependedText('email',
                      mark_safe('<span class="glyphicon glyphicon-envelope"></span>'),
                      placeholder=_("Enter Email"), autofocus="")
    ),
    Field(
        PrependedText('name',
                      mark_safe('<span class="glyphicon glyphicon-user"></span>'),
                      placeholder=_("Enter Full Name"))
    ),