Ошибка загрузки образца шаблона 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>