2014-10-07 5 views
0

Submit를 crispy-froms와 함께 사용할 수 없습니다. 부트 스트랩이있는 정상적인 장고 양식이 정상적으로 작동합니다. 찾을 수있는 모든 자습서를 시도했으며 현재이 코드에 무엇이 잘못되었는지를 찾을 수 없습니다.Django 파삭 파삭 한 폼은 저장/제출하지 않습니다.

엄지 손가락을 클릭하면 내 고객 개요 페이지가 열리지 만 새로운 고객이 추가되지 않았습니다. 여기에 모든 필드가 표시되지는 않지만 필드 설정은 모두 Null 값을 허용하도록 설정됩니다.

내 models.py

from django.db import models 
from django.utils.encoding import smart_unicode 

class CustomerType(models.Model): 
    customer_type = models.CharField(max_length=120, null=True, blank=True) 
    timestamp_created = models.DateTimeField(auto_now_add=True, auto_now=False) 
    timestamp_updated = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return smart_unicode(self.customer_type) 

class Customer(models.Model): 
    customer_type = models.ForeignKey(CustomerType, null=True, blank=True) 
    customer_name = models.CharField(max_length=120, null=True, blank=True) 

내 views.py

def customercrispy(request): 
    form = ExampleForm() 
    return render_to_response("customer-crispy.html", 
           {"example_form": form}, 
           context_instance=RequestContext(request)) 

내 forms.py

from django import forms 
from crispy_forms.helper import FormHelper 
from crispy_forms.layout import Layout, Fieldset, ButtonHolder, Submit, Div, Field 
from crispy_forms.bootstrap import TabHolder, Tab, FormActions 
from .models import Customer 

class CustomerAddForm(forms.ModelForm): 
    class Meta: 
     model = Customer 

class ExampleForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(ExampleForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper(self) 
     self.helper.form_method = 'post' 
     self.helper.form_action = '/customeroverview/'  
     self.helper.add_input(Submit('submit', 'Submit')) 

    class Meta: 
     model = Customer 

EDIT : CMD 출력 열면 형태

[08/Oct/2014 12:45:12] "GET /customercrispy/ HTTP/1.1" 200 11203 
[08/Oct/2014 12:45:12] "GET /customercrispy/static/js/ie-emulation-modes-warning.js HTTP/1.1" 404 3118 
[08/Oct/2014 12:45:12] "GET /assets/js/ie10-viewport-bug-workaround.js HTTP/1.1" 404 3079 

CMD 출력

[08/Oct/2014 12:46:52] "POST /customeroverview/ HTTP/1.1" 200 5129 
[08/Oct/2014 12:46:52] "GET /customeroverview/static/js/ie-emulation-modes-warning.js HTTP/1.1" 404 3124 
[08/Oct/2014 12:46:52] "GET /assets/js/ie10-viewport-bug-workaround.js HTTP/1.1" 404 3079 
+0

은 서버 측에 (있는 경우) 어떤 오류를 얻고있다 :보기에 modelforms에 대한

더 많은 문서? "터미널"또는 CL을 통해 서버를 실행하는 경우 양식을 제출 한 후 얻은 결과를 공유 할 수 있습니까? 또한 프론트 엔드에서 문제를 진단하려고 시도 했습니까 (브라우저 터미널의 오류를 통해)? – Joe

+0

템플릿을 아직 가지고 있지 않은 경우 템플릿을로드하기 전에'{% load crispy_forms_tags %} '를 사용하여로드해야하는'{% crispy example_form %}'태그를 사용해야합니다. – slackmart

+0

안녕하세요, Joe, 질문에 터미널 출력을 추가했습니다. 브라우저는 저장하는 동안 오류를 표시하지 않습니다. settings.py에서 디버그 옵션을 사용할 수 없습니다. – phicon

답변

1

보기를 저장 확인하지 않습니다. 현재 양식을 작성하고 렌더링 만합니다. 양식 게시시 아무것도 수행되지 않고 다시 렌더링됩니다. 따라서 POST의 경우 양식이 유효한지 확인하고 저장하십시오. 그러면 다음과 같이됩니다.

def customercrispy(request): 
    if request.method == 'POST': 
     form = ExampleForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect('customercripsy') # name of view stated in urls 
    else: 
     form = ExampleForm() 

    return render_to_response("customer-crispy.html", 
          {"example_form": form}, 
          context_instance=RequestContext(request)) 

이렇게하면 '/ customeroverview /'를 양식 작업으로 설정하지 않아도됩니다. 이 URL에 정말로 게시하려면 질문에 customeroverview보기를 추가하십시오. Btw, 장고의 reverse 함수를 사용하여 URL을 만드는 데 도움이 될 것입니다. (https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse). https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-a-model-formset-in-a-view