【问题标题】:How to format form fields for django comments?如何格式化 django 评论的表单字段?
【发布时间】:2011-05-22 19:06:03
【问题描述】:

我正在使用 django 为我生成的表单。我在我的博客中发表帖子后将其用作评论表单。

目前它渲染得很好,但它没有很好地对齐。 这就是我所拥有的。 这就是我想要的。

谢谢

编辑:这是我使用 {{ form.as_table }} 时的结果

【问题讨论】:

  • 如何在模板中呈现表单?
  • 目前是全自动的。我没有指定任何东西。如果我在我的模板/cmets 目录中创建一个 form.html 文件并使用 {{ form.as_p }} 那么它会呈现隐藏字段。 :P

标签: django formatting django-forms styling django-comments


【解决方案1】:

我知道有点晚了,但其他人可以试试这个

<table>
{{ form.as_table }}
</table>

它解决了烦人的格式问题,看起来不错。

【讨论】:

    【解决方案2】:

    发布我的解决方案,希望有一天能对其他人有所帮助。 我知道您会使用 css 设置字段的样式,但不确定如何将类分配给每个项目。但是,如果您查看提供的默认模板,您会注意到错误类是使用 foreach 循环中的 if 语句分配给字段的,该循环会自动生成表单中的每个字段。

    {% for field in form %}    
    < p{% if field.errors %} 
        class="error"
    {% endif %}
        {{ field.label_tag }}<'/' p> 
    {% endfor %}
    

    所以我添加了这个功能。

    < p{% if field.errors %} 
        class="error"
    {% endif %}
    {% ifequal field.name "honeypot" %} 
        id="hide"
    {% else %}
         id="left"
    {% endifequal %}>
        {{ field.label_tag }}<'/' p> 
    

    我的 CSS 存在

    #hide{
        display:none;
    
    }
    
    #left{
        width: 200px;
        text-align: left;
    
    }
    
    #right{
        width: 300px;
        text-align: left;
    
    }
    

    现在您可以设置类,您可以在 css 文件中轻松设置类或 id。这是给cmets的。 如果您使用 {{ form.as_p }} 或 {{ form.as_table }} 来生成表单,那么您只需在 css 中设置一个通用表单类来设置它的样式。

    form {
    width: 350px;
    padding: 20px;
    border: 1px solid #270644;
    }
    

    【讨论】:

      【解决方案3】:

      看看Customizing the form template。这是一种可能的解决方案。

      也许您可以简单地使用 CSS 来设置您的表单和 render the form 的样式。 (即 as_table())。

      【讨论】:

      • 如果我使用 {{form.as_table}} 那么它会呈现所有字段和标题并且不会很好地排列它们。如果我使用 {{ form.as_p }},那么我会得到与上面看到的相同的结果,除了这两个选项我也会渲染隐藏字段。
      • 我会深入研究该文档,但如果您遇到任何示例,请告诉我。会更容易理解。
      【解决方案4】:

      使用默认的{% render_comment_form for app.model %}会生成:

      <p>
            <label for="id_name">Name</label> 
            <input id="id_name" type="text" name="name" maxlength="50">
          </p>
          <p>
            <label for="id_email">Email address</label> 
            <input type="text" name="email" id="id_email">
      
      </p>
      ... etc
      

      因此,您可以使用以下方式在 CSS 样式表中定位 label

      label {
        width: 15%;
      }
      

      【讨论】:

      • 调整页面大小(缩小)时这不好。
      【解决方案5】:

      this post 中详述了多种方法,但是,我发现有时小部件属性可能无法按您想要的方式工作。

      不过,最好和最简单的方法是使用 CSS:

      呈现包含表单字段的页面并进行一些检查(例如,右键单击>检查或在 Chrome 上按 F12)以了解表单在呈现时生成的 html 标记。然后你可以轻松地编写你的 CSS。

      您的表单中有 inputtextarea 字段,因此您的 CSS 将是:

      input, textarea{
          width:350px;
      }
      

      不要忘记在 html 模板顶部调用 CSS 文件:

      <link rel="stylesheet" type="text/css" href="{% static 'styles/form.css' %}">
      

      这是我自己的表单的快照:

      【讨论】:

        猜你喜欢
        • 2011-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 2014-11-23
        • 2019-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多