2013-11-21 38 views
1

我相信我是非常密集的,但花了好几天的时间来试着弄清楚我做错了什么。django脆皮表格按钮没有显示

  • 安装Django的脆皮形式(使用PIP)
  • 加入 'CRISPY_TEMPLATE_PACK' 我的设置
  • 加入 'crispy_forms' 我的应用程序
  • 做了 'collectstatic'从下载的tar文件(因为模板和CSS不包含在该点中)
  • 将'{%crispy_forms_tags%}添加到我的表单html文件中
  • 从crispy_forms.helper和crispy_forms.layout导入到我的forms.py

我使用的是引导3,其中我直接编码,而不是使用引导程序的工具包

引导程序则在所有细我的页面和表单域也是这样,但按钮不会出现。

我的HTML如下:

{% extends 'base.html' %} 
{% load crispy_forms_tags %} 

<html> 

<title>Add Guest</title> 


<div class='container'> 
    {% block col1 %} 
    <div class='row'> 
     <div class="span3"> 
     {% endblock %} 
     {% block col2 %} 
     <div class="span9"> 
      <ul> 
       {% crispy form %} 
      </ul> 
     </div><!--/span9--> 
     {% endblock %} 
    </div><!--row--> 
</div><!--/container--> 

</html> 

如果我改变香脆标签{%香脆MyForm的MyForm.helper%}我得到 'VariableDoesNotExist在' 加连续多(实际)语言。如上所述呈现表单域,但不是按钮。

我forms.py看起来是这样的:

from django.forms import ModelForm 
from django import forms 
from crispy_forms.helper import FormHelper 
from crispy_forms.layout import Layout, Fieldset, ButtonHolder, Submit 
from .models import Author 

class NewAuthorForm(forms.ModelForm): 
    class Meta: 
     model = Author 
     # If you pass FormHelper constructor a form instance 
     # It builds a default layout with all its fields 
     helper = FormHelper() 
     helper.form_method = 'post' 
     helper.add_input(Submit('save', 'save', css_class = 'btn-primary')) 

我知道这里有一些冗余在进口方面,但这个数字是没有问题的。

最后,我base.html文件是:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Bootstrap 101 Template</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <!-- Bootstrap --> 
    <link href="{{ STATIC_URL }}css/bootstrap.min.css" rel="stylesheet"> 

    <!-- note that there’s also blue.uni-form.css and dark.uni-form.css available if you want to try chan--> 
    <link rel="stylesheet" href="{{ STATIC_URL }}crispy_forms/static/uni_form/uni-form.css" type="text/css" /> 
    <link rel="stylesheet" href="{{ STATIC_URL }}crispy_forms/static/uni_form/default.uni-form.css" type="text/css" /> 
    <!-- uni-form JS library, optional --> 
    <script src="{{ STATIC_URL }}crispy_forms/static/uni_form/uni-form.jquery.js" type="text/javascript"></script> 


    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> 
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
    <!--[if lt IE 9]> 
     <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> 
     <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> 
    <![endif]--> 
    </head> 
    <body> 
     <div class='container'> 
      {% block col1 %} 
      <div class='row'> 
       <div class="span3"> 
       {% endblock %} 
       {% block col2 %} 
       <div class="span9"> 
       </div><!--/span9--> 
       {% endblock %} 
      </div><!--row--> 
     </div><!--/container--> 

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
    <script src="https://code.jquery.com/jquery.js"></script> 
    <!-- Include all compiled plugins (below), or include individual files as needed --> 
    <script src="{{ STATIC_URL }}js/bootstrap.min.js"></script> 
    </body> 
</html> 

我已经把香脆的表单模板在我的模板文件夹,它是在同一水平manage.py。正如我所说,所有bootstrap渲染罚款。

我很难过。任何想法感激地接受

+0

同样的问题:(Django的1.6,脆皮形式1.4 – Juliusz

+0

我提出了一个编码错误@Juliusz在表格的第一行我要把。 '类NewAuthorForm(forms.ModelForm)',而我应该把'类NewAuthorForm(ModelForm)',省略'窗体'。 – sidestrand

+0

我已经放弃了现在试图解决我的问题几个月的香脆形式。耻辱,这似乎是一个很好的选择。 – sidestrand

回答

2

我绝对不知道为什么,但不知何故,从意见中除去

from __future__ import absolute_import 

固定的问题,对我来说,现在我的按钮都显示出来。

P.S发现这个问题,谷歌搜索解决方案,并决定注册,并希望可以帮助下一个这样的问题:)。

0

这是一个旧帖子,但如果我在搜索时将它放在这里,可能会有其他人。

我使用的是Django 1.11.9和django-crispy-forms 1.7.0。你在正确的轨道上,你实际上想为init添加“提交”按钮,而不是在Meta中。

见下文:

from django.forms import ModelForm 
from django import forms 
from crispy_forms.helper import FormHelper 
from crispy_forms.layout import Layout, Fieldset, ButtonHolder, Submit 
from .models import Author 

class NewAuthorForm(forms.ModelForm): 
    class Meta: 
     model = Author 

    def __init__(self, *args, **kwargs): 
     super(NewAuthorForm, self).__init__(*args, **kwargs) 
     # If you pass FormHelper constructor a form instance 
     # It builds a default layout with all its fields 
     self.helper = FormHelper() 
     self.helper.form_method = 'post' 
     self.helper.add_input(Submit('save', 'save', css_class = 'btn-primary')) 

http://django-crispy-forms.readthedocs.io/en/latest/crispy_tag_forms.html#fundamentals