2013-11-21 4 views
1

Я уверен, что я очень плотный, но провел дни, пытаясь понять, что я сделал неправильно.django кнопка хрустящей формы не отображается

У меня есть

  • установленные Джанго-хрустящие-формы (с использованием пип)
  • добавил 'CRISPY_TEMPLATE_PACK' мои настройки
  • добавил 'crispy_forms' моих приложений
  • сделал 'collectstatic' из загруженного файла tar (так как шаблоны и CSS не включены в пип)
  • добавил '{% crispy_forms_tags%} в мою форму html-файл
  • импортирован из crispy_forms.helper и crispy_forms.layout моего forms.py

Я использую Bootstrap 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. Как я уже сказал, все бутстрапы отлично выглядят.

Я в тупике. Любые идеи с благодарностью получил

+0

Такая же проблема :(Django 1.6, хрустящие-формы 1,4 – Juliusz

+0

я сделал ошибку кодирования @Juliusz В первой строке формы я бы поставил. 'class 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

Смежные вопросы