簡體   English   中英

django脆皮窗體按鈕未顯示

[英]django crispy form button not showing

我確信我非常密集,但是花了幾天的時間來弄清楚我做錯了什么。

我有

  • 安裝的django-crispy-forms(使用pip)
  • 在我的設置中添加了“ CRISPY_TEMPLATE_PACK”
  • 在我的應用程序中添加了“ crispy_forms”
  • 從下載的tar文件中完成了“ collectstatic”操作(因為pip中不包含模板和CSS)
  • 已將'{%crispy_forms_tags%}添加到我的表單html文件中
  • 從crispy_forms.helper和crispy_forms.layout導入到我的forms.py

我正在使用Bootstrap 3,我直接在編碼而不是使用bootstrap-toolkit

Bootstrap在我的所有頁面上都能很好地呈現,表單字段也可以呈現,但是按鈕不會出現。

我的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>

如果我將crispy標簽更改為{%crispy MyForm MyForm.helper%},則會得到“ VariableDoesNotExist at”以及許多(真實)語言的連續形式。 如上所示,將顯示表單字段,但不顯示按鈕。

我的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處於同一級別。 正如我所說,所有引導程序都可以正常顯示。

我很沮喪 感謝收到任何想法

我完全不知道為什么,但是以某種方式刪除

from __future__ import absolute_import

從視圖中解決了這個問題,現在我的按鈕出現了。

PS找到了這個問題,搜尋了一個解決方案,並決定注冊並希望幫助下一個有此問題的人:)。

這是一個舊帖子,但是如果我在搜索中在此發布它,很可能會有其他人這么做。

我正在使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM