2013-12-20 2 views
4

에, 나는 점점 계속 VariableDoesNotExist at /Failed lookup for key [form] in u'[{\'False\': False, \'None\': None,.....바삭 양식 VariableDoesNotExist 장고에 바삭한 양식 장고

{% 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"), 
      ) 
     ) 

내가 이해하지 않는다 {% crispy form %}을 (를) 사용할 수 있어야하는 속성 도우미의 FormHelper

+0

보기가 어떻게 생겼습니까? – sk1p

+0

죄송합니다, 어떤보기? forms.py에있는이 클래스 이외의보기가 없습니다. – dman

+0

보기가없는 경우 어떻게 템플릿을 렌더링합니까 ??? 그것은 비 의미입니다. –

답변

8

crispy 템플릿 태그의 첫 번째 인수는 n입니다. Crispy Forms가 Form 인스턴스를 예상하는 컨텍스트 변수의 값입니다. 따라서 템플릿 컨텍스트에서 어떻게 든 Form 인스턴스를 가져와야합니다.

@register.inclusion_tag('path/to/login_form.html') 
def display_login_form(): 
    return {'form': LoginForm()} 

그리고에 : 당신이보기에이 양식을 사용한다면 당신이 많은 다른 페이지에서 해당 양식을 가지고 싶다면, 당신은 나는 inclusion tag을 건의 할 것,

def yourview(request): 
    return TemplateResponse(request, "yourtemplate.html", {'form': LoginForm()}) 

같은 뭔가를 할 수 템플릿은 :

{% load your_template_tags %} 
{% display_login_form %} 

1

(또한 the usual setup procedure for custom template tags 참조) Failed lookup for key [form]과 함께 VariableDoesNotExist 문제가 생겼지 만 문제는 내가 generic.UpdateView 대신 기본 클래스로 실수로 generic.DetailView을 사용했다는 것입니다.

UpdateView으로 변경하면 문제가 해결됩니다.

class MyUpdateView(generic.UpdateView): 

    template_name = "object_update.html" 
    model = MyModel 
    form_class = MyCreateForm