[英]Crispy Form VariableDoesNotExist on Django
對於Django上的crispy表單,我一直在VariableDoesNotExist at /
找到VariableDoesNotExist at /
Failed lookup for key [form] in u'[{\\'False\\': False, \\'None\\': None,.....
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block loginForm %}
<div class="container" style="padding-bottom: 70px;">
<div class='row'>
<div class='col-md-6 col-md-offset-3'>
<div class="well">
<legend>Sign in</legend>
<form method="post" action="{% url 'django.contrib.auth.views.login' %}" class="form-horizontal">
{% crispy form %}
<input type="hidden" name="next" value="{{ next }}"/>
</form>
</div>
</div>
</div>
</div>
{% endblock loginForm %}
forms.py:
from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Submit, HTML, Button, Row, Field, Hidden, Fieldset
from crispy_forms.bootstrap import AppendedText, PrependedText, FormActions
from django.contrib.auth.forms import AuthenticationForm
class LoginForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-lg-2'
self.helper.field_class = 'col-lg-8'
self.helper.form_tag = False
self.helper.layout = Layout(
Field('username', placeholder="username", css_class='input-xlarge'),
Field('password', placeholder="Password", css_class='input-xlarge'),
FormActions(
Submit('login', 'Login', css_class="btn-primary"),
)
)
我不明白,因為根據文檔我在屬性助手上使用FormHelper所以我應該能夠使用{%crispy form%}
crispy
模板標記的第一個參數是Crispy Forms期望Form
實例的上下文變量的名稱。 因此,您需要以某種方式在模板上下文中獲取Form
實例。 如果您在視圖中使用此表單,則可以執行類似的操作
def yourview(request):
return TemplateResponse(request, "yourtemplate.html", {'form': LoginForm()})
如果您想在許多不同的頁面上使用該表單,我建議使用包含標記 :
@register.inclusion_tag('path/to/login_form.html')
def display_login_form():
return {'form': LoginForm()}
在您的模板中:
{% load your_template_tags %}
{% display_login_form %}
(另請參閱自定義模板標記的常用設置過程 )
我遇到了VariableDoesNotExist
問題以及Failed lookup for key [form]
,但對我來說問題是我錯誤地使用generic.DetailView
作為基類而不是generic.UpdateView
。
更改為UpdateView
修復了該問題。
class MyUpdateView(generic.UpdateView):
template_name = "object_update.html"
model = MyModel
form_class = MyCreateForm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.