Ошибка загрузки образца шаблона django-bootstrap3

Я все еще новичок в Django и Bootstrap, поэтому я пытаюсь выполнить пакет django-bootstrap: https://github.com/dyve/django-bootstrap3

Шаблон образца, который включен на эту страницу (с изменением url в действии формы):

{% load bootstrap3 %}

{# Load CSS and JavaScript #}

{% bootstrap_css %}
{% bootstrap_javascript %}

{# Display a form #}

<form action="/search/" method="post" class="form">
        {% csrf_token %}
        {% bootstrap_form form %}
        {% bootstrap_form_buttons %}
                <button type="submit" class="btn btn-primary">
                        {% bootstrap_icon "star" %} Submit
                </button>
        {% end_bootstrap_form_buttons %}
</form>

Дает мне ошибку:

BootstrapError at /
Parameter "form" should contain a valid Django Form.

в этой строке

{% bootstrap_form form %}

Я не совсем уверен, в чем проблема, так как это шаблон образца, включенный в этот README.

Ответы

Ответ 1

{% bootstrap_form form %} - это тег шаблона, предоставляемый django-bootstrap3, который ожидает экземпляр формы django, поэтому параметр < form является переменной контекста, упомянутой в displaying-a-form-using-a-template из django docs.

Создайте форму, как описано на этой странице, а затем замените HTML-код, который они используют в шаблоне:

<form action="/contact/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>

по образцу кода в вашем вопросе.

Теперь Parameter "form" contains a valid Django Form

Надеюсь, что это поможет

Ответ 2

Вам просто нужно предоставить серверную часть объекта формы, которая должна иметь название "форма".

В вашем view.py включить что-то вроде этого

from django.shortcuts import render

def index(request):
    from django import forms
    class NameForm(forms.Form):
        your_name = forms.CharField(label='Your name', max_length=100)

    template = "your_template.html"
    context = { "form" : NameForm() }
    return render( request, template, context )

Теперь у вас не должно быть ошибок.

Надеюсь, что это поможет

Ответ 3

Вам действительно не нужны теги bootstrap_button. Я попытался их найти, но они не объявлены в источнике...

Ответ 4

Поместите {% extends 'bootstrap3/bootstrap3.html' %} в начало вашего фрагмента. Он должен быть вашим файлом, bootstrap3.html находится в этом placeholder.

Ответ 5

Ошибка довольно проста, убедитесь, что вы прошли действительную форму django. Я пропустил form.as_p() вместо form на мой взгляд и получил эту ошибку. Мне потребовалось некоторое время, чтобы заметить. Может быть, это все равно поможет кому-то.

Ответ 6

попробуйте это

{# Load the tag library #}
{% load bootstrap3 %}

{# Load CSS and JavaScript #}
{% bootstrap_css %}
{% bootstrap_javascript %}

{# Display django.contrib.messages as Bootstrap alerts #}
{% bootstrap_messages %}

{# Display a form #}
<form action="/url/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-primary" value="Submit" />
</form>

Ответ 7

для django 1.8 используйте {{ form }} вместо {{ form.as_p }}, как в django 1.6, поскольку это незначительное изменение может вызвать ошибку

см. официальную документацию django 1.8: https://docs.djangoproject.com/en/1.8/topics/forms/#the-template

{% load bootstrap3 %}
{# Display a form #}

<form action="/submit/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>