【问题标题】:Normal text field workable but once i add in form control it stop working普通文本字段可行,但一旦我添加表单控件,它就会停止工作
【发布时间】:2021-10-09 03:52:37
【问题描述】:

目前我有这个表单,其中输入是普通的文本字段(基本外观)并且它可以工作。但是一旦我添加了表单控件,它就会停止工作。

在我的 HTML 中(文本字段的一部分):可行

 <div class="col-md-5">
  <div class="form-group">
   <label for="{{form.hostname.id_for_label}}">Hostname</label>
    {{form.hostname}}
  </div>
 </div>

但如果我将其更改为以下代码:不可行

<div class="col-md-5">
 <div class="form-group">
  <label for="{{form.hostname.id_for_label}}">Hostname</label>
  <input class="form-control" type="text" id="{{form.hostname.id_for_label}}" name="{{form.hostname}}" 
   placeholder="" required>
 </div>
</div>

我做错了吗?感谢是否有人可以提供帮助

【问题讨论】:

  • 您是否忘记在idname 上使用{{ }} 作为输入?
  • 我做到了。它也不起作用
  • 如果您只需要添加form-control,您可能只需执行this之类的操作
  • 我解决了,谢谢!

标签: html django


【解决方案1】:

您没有使用大括号,也没有为名称指定字段的名称属性。像这样的:

<input class="form-control" type="text" 
       id="{{ form.hostname.id_for_label }}" 
       name="{{ form.hostname.name }}" 
       {% if value %} value="{{ form.hostname.value }}"{% endif %} 
       placeholder="" 
       {% if form.hostname.field.required %}required{% endif %}>

您可能希望查看 django 脆表单或 django floppyforms,而不是像这样手动渲染。

【讨论】:

  • 即使我包含大括号也不起作用
  • 您是否将 name="form.hostname" 更改为 name="{{ form.hostname.name }}" 请注意额外的 .name。
  • 哦!知道了。但我有问题。有什么价值?因为现在当我刷新新页面时,我的表单中有“无”这个词。 if 后面的目的是什么?
  • 抱歉,更新了我的答案以在设置值之前检查值是否存在。您没有分享您的观点,但通常提交表单,您检查它是否有效,如果不是,您让他们编辑表单。像这样设置值会在重新呈现时使用先前输入的数据填充字段。仅当表单字段在 django 表单模型中定义为必需而不是在 html 中硬编码时,最后的 if 才设置“必需”属性。您真的想使用其中一种表单呈现库来为您完成所有这些工作。
  • 哦,如果我使用 django 来检查表单是否有效,那么在 html 中的检查是多余的吧?
【解决方案2】:

如果您需要添加自定义类名,那么您可以像这样覆盖您的表单

def __init__(self, *args, **kwargs):
        super(form_name, self).__init__(*args, **kwargs)
        
        self.fields['hostname'].widget.attrs.update({'class': 'form-control'})

将这些添加到您使用的表单下的 forms.py 中,这会将自定义类添加到相应的字段中

【讨论】:

    猜你喜欢
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多