2016-05-23 14 views
0

私の入力テキストフィールドは、すっきりした形でレンダリングされています。すべての例で、ほとんどのテキストフィールドは1文字の高さしか持っていません(これは私が望むものです)。しかし、私の入力フィールドははるかに高いです。 私はbootstrap3を使用しています。 (添付画像参照)enter image description hereクリスピーフォームのテキスト入力の高さ(Django 1.9)

私の基本テンプレートには、私が見る限り特別なものはありません。ここでの主な部分だ:

 <body class="skin-black"> 
    <!-- header logo: style can be found in header.less --> 
    <header class="header"> 
     <a href="/" class="logo"> 
     <img src="{% static 'portal/logo.png' %}" alt="Logo"/> 
     </a> 
     <!-- Header Navbar: style can be found in header.less --> 
     <nav class="navbar navbar-static-top" role="navigation"> 
      <!-- Sidebar toggle button--> 
      <a href="#" class="navbar-btn sidebar-toggle" data-toggle="offcanvas" role="button"> 
       <span class="sr-only">Toggle navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </a> 
      <div class="navbar-right"> 
       {% if user.is_authenticated %} 
        <a href="/logout"><span class="glyphicon glyphicon-log-out"></span> Logout {{ user.username }} </a> 
       {% else %} 
        <a href="/registration/login"><span class="glyphicon glyphicon-log-in"></span> Login</a> 
       {% endif %} 
      </div> 
     </nav> 
    </header> 
      <div class="wrapper row-offcanvas row-offcanvas-left"> 
       <!-- Left side column. contains the logo and sidebar --> 
       <aside class="left-side sidebar-offcanvas"> 
        <!-- sidebar: style can be found in sidebar.less --> 
        <section class="sidebar"> 
         <!-- Sidebar user panel --> 
         <div class="user-panel"></div> 
        </section> 
         <!-- sidebar menu: : style can be found in sidebar.less --> 
        {% if user.is_authenticated %} 
         <div id="MainMenu"> 
          <div class="list-group panel"> 
           {% for group in user.groups.all %} 
           {% if not group.name == 'client' %} 
            <a href="/" class="list-group-item">Home</a> 
            <a href="/modules" class="list-group-item">Modules</a> 
           {% endif %} 
           {% endfor %} 
          </div> 
          </div> 
        {% endif %} 
        </aside> 

      <aside class="right-side"> 
       <section class="content"> 
        <div class="wrapper"> 
         <div class="row"> 
          {% block content %}{% endblock %} 
         </div> 
        </div> 
       </section> 


      <div class="footer-main navbar-default navbar-fixed-bottom" id="footer"> 
       Copyright &copy NOZHUP, 2016 
      </div> 
      </aside><!-- /.right-side --> 


    </div> 

Forms.py:

from django import forms 
from django.core.urlresolvers import reverse_lazy 
from django.contrib.auth.forms import AuthenticationForm 
from .models import Module, Category, Case 
from crispy_forms.helper import FormHelper 
from crispy_forms.layout import Submit, Layout, Field, Fieldset, ButtonHolder 
from crispy_forms.bootstrap import (
    PrependedText, PrependedAppendedText, FormActions) 



class ModuleForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(ModuleForm, self).__init__(*args, **kwargs) 

     self.helper = FormHelper(self) 
     self.helper.form_method = 'POST' 
     #self.helper.form_class = 'form-horizontal' 
     #self.helper.label_class = 'col-md-2' 
     #self.helper.field_class = 'col-md-8' 
     self.helper.layout = Layout(
      Fieldset(
       'Enter module name, version and description', 
       'name', 
       'version', 
       'description' 
      ), 
      ButtonHolder(
       Submit('submit', 'Submit', css_class='button white') 
      ) 
     ) 

    class Meta: 
     model = Module 
     fields=('name', 'version', 'description') 

class CategoryForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(CategoryForm, self).__init__(*args, **kwargs) 

     self.helper = FormHelper(self) 
     self.helper.form_method = 'POST' 
     self.helper.layout.append(Submit('save', 'save')) 

    class Meta: 
     model = Category 
     fields=('name',) 

models.py:

from __future__ import unicode_literals 
from django.db import models 

# Create your models here. 
class Module(models.Model): 
    name = models.TextField(null=True) 
    version = models.TextField(null=True) 
    description = models.TextField(null=True) 

    def __unicode__(self): # __unicode__ on Python 2 
     return self.name 


class Category(models.Model): 
    name = models.TextField(null=True) 
    module = models.ForeignKey(Module, on_delete=models.CASCADE) 

    def __unicode__(self): # __unicode__ on Python 2 
     return self.name 

class Case(models.Model): 
    name = models.TextField(null=True) 
    action = models.TextField(null=True) 
    desiredresult = models.TextField(null=True) 
    category = models.ForeignKey(Category, on_delete=models.CASCADE) 

    def __unicode__(self): # __unicode__ on Python 2 
     return self.name 

class Suite(models.Model): 
    name = models.TextField(null=True) 
    description = models.TextField(null=True) 
    cases = models.ManyToManyField(Case) 
    untested = models.IntegerField(default=0) 
    passed = models.IntegerField(default=0) 
    failed = models.IntegerField(default=0) 

    def __unicode__(self): # __unicode__ on Python 2 
     return self.name 

module_edit.html:

{% extends "base.html" %} 
{% load crispy_forms_tags %} 
{% block content %} 
<h4>Modules</h4> 
{% crispy form %} 
{% endblock %} 
+0

フォームクラスのコードを投稿してください。 – solarissmoke

+0

'forms.py'クラスと' models.py'クラスを投稿する必要があります。間違ったウィジェットを使用してコンポーネントをレンダリングしている可能性があります。また、クリスピーフォームを使用している場合は、投稿したテンプレートに '{%load crispy_forms_tags%}'が見つかりません。つまり、レンダリングに鮮明なフォームを使用していないことを意味します。 – Cheng

+0

@Cheng:私が見ることができるように、サブテンプレートでタグを使用しています... – zappfinger

答えて

0

は、私はあなたが使用していると思いますの代わりに誤って。通常、モデルのほとんどはCharFieldであり、いくつかのフィールドのうちのいくつかだけがTextFieldです。 TextFieldは、より長い、多分多分、リッチテキストの可能性のあるコンテンツのためのものです。 ModulenameまたはModuleversionを複数行にすることをお勧めします。 descriptionでもそれが必要ではないかもしれません(あなたのビジネスニーズはそれを伝えることができます)。

通常、チュートリアルで表示されるテキスト入力フィールドは、CharFieldにレンダリングされた<input type="text"です。あなたが持っているものは、TextFieldのためにレンダリングされたtextareaです。自然にそのように見えるはずです(デフォルトでは10行40列です)。その場合、あなたはまだテキストエリアを一度に示してどのように多くの行と列に影響することができます(ただし、編集可能なコンテンツがはるかに長くすることができます):

self.fields['description'].widget = forms.Textarea(attrs={'rows': 4, 'cols': 25}) 

これはところで、標準のDjangoで、クリスピーフォームはそれを拾います。

関連する問題