我还是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中包含的示例模板。
答案 0 :(得分:4)
{% bootstrap_form form %}
是由django-bootstrap3提供的模板标记,它期望django表单实例,因此“form
”参数是来自django docs的displaying-a-form-using-a-template中提到的上下文变量。
按照该页面中的说明创建表单,然后替换他们在模板中使用的html代码:
<form action="/contact/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
通过问题中的示例代码。
现在Parameter "form" contains a valid Django Form
希望这有帮助
答案 1 :(得分:2)
您只需要提供一个对象表单服务器端,它必须具有上下文名称“form”。
在views.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 )
现在你不应该有任何错误。
希望有所帮助
答案 2 :(得分:1)
试试这个
{# 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>
答案 3 :(得分:0)
你真的不需要bootstrap_button标签。我试图找到它们,但它们没有在源中声明......
答案 4 :(得分:0)
将{% extends 'bootstrap3/bootstrap3.html' %}
放在代码段的开头。它应该是你的文件,bootstrap3.html就在这个占位符。
答案 5 :(得分:0)
错误非常简单,请确保传递有效的django表单。我在视图中传递了form.as_p()
而不是form
,并收到了此错误。我花了一段时间才注意到。可能它仍然可以帮助某人。
答案 6 :(得分:-1)
对于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>