2013-02-05 2 views
0

페이지에서 html 양식을 닫은 다음 다시 열 수 있습니까? 기본적으로 스프레드 시트 -ESK 웹 프런트는 데이터베이스에서 데이터를 가져옵니다. 그러나 필드를 왼쪽 div와 오른쪽 div로 나누어야했습니다. 이유는 왼쪽 div 필드 (왼쪽 div 필드는 스크롤바가없는 정적 필드와 비슷 함)가 더 많은 필드가 포함되어 있기 때문에 올바른 div의 가로 스크롤 막대를 원했기 때문입니다. 이는 기존 스프레드 시트의 모양을 복제하는 것입니다.Django 루프 내에서 HTML 양식 계속

내 템플릿 내에서 2 개의 for 루프를 사용하여이 작업을 수행하기로 결정했습니다. 첫 번째 루프는 페이지의 왼쪽면을 생성 한 다음 왼쪽 div를 닫고 두 번째 루프는 페이지의 오른쪽면을 생성 한 다음 오른쪽 div를 닫습니다.

내가 이런 식으로하고 있기 때문에 첫 번째 양식을 닫기 전에 수많은 양식 요소가있는 곳에 문제가 있습니다.

<div left> 
    <% for bla in bla %} 
     <form id="{{ bla.id }}"><submit> 
     <input value="{{ bla.name}}"><input value="{{ bla.number }}"> 
    {% endfor %} 
</div> 
<div right> 
    {% for bla2 in bla2 %} 
     <input value="{{ bla2.address}"><input value="{{ bla2.state }}"> 
     </form> 
    {% endfor %} 
</div> 

은 분명히 난 당신이 두 번째 DIV가 생성 될 때까지 폐쇄되지 않은 여러 형태의 요소를 가지고 위의 유사한 코드에 의해 생성 된 HTML을 볼 때 같은 문제가 있습니다. 따라서 POST 데이터는 항상 마지막 레코드입니다.

내가 시도한 이름과 ID는 {{bla.id}}입니다. 그런 다음 첫 번째 루프에서 양식을 닫고 같은 ID와 이름 {{bla.id}}을 사용하여 두 번째 루프에 새 태그를 추가합니다.

페이지가이 양식이 이전 양식의 연속임을 알았지 만, 아쉽게도 작동하지 않아 주변을 찾을 수없는 것처럼 보였습니다.

아마 내 전체 논리가 꺼져 있고 페이지 전체를 다르게 생성해야합니다. 어쩌면 내가 누락 된 간단한 해결책이있을 것입니다 ...

나는 충분히 설명하기를 바랍니다.

감사합니다. 감사합니다. 코멘트에서

답변

0

[편집]

, 당신은 각 레코드 버튼을 제출하고 싶어, 당신은 여전히 ​​"행"각 양식 태그를 통해 반복, 아래에 설명 된 마크 업을 사용할 수 있습니다. 개체 이름이 blahblah2 인 경우 오해의 소지가 있습니다. 특히 모든 필드가 단일 모델을 구성하는 경우

실제로 필드가 동일한 모델의 모든 부분 인 경우 for 루프는 각 "열"대신 간단히 양식 태그 밖으로 이동합니다.

필드를 수동으로 출력하지 않으려면 모델 formset을 사용하여 모델 양식의 여러 인스턴스를 생성하는 것입니다. 마크 업은 아래에 설명 된 것과 거의 동일하지만 formset의 루프 외부에 formset의 관리 양식에 대한 추가 필드가 있습니다.

예 :

<form action="." method="post" enctype="application/x-www-form-urlencoded"> 
    <div id="left_column"> 
     <fieldset> 
      {% for bla in blah %} 
       <input name="name" value="{{ bla.name}}" /> 
       <input name="number" value="{{ bla.number }}" /> 
      {% endfor %} 
     </fieldset> 
    </div> 
    <div id="right_column"> 
     <fieldset> 
      {% for bla2 in blah2 %} 
       <input name="address" value="{{ bla2.address}" /> 
       <input name="state" value="{{ bla2.state }}" /> 
      {% endfor %} 
     </fieldset> 
    </div> 
    <input type="submit" value="Submit" /> 
</form> 

양식의 각 요소에 이름 속성이 필요합니다, 또는 당신은 request.POST QueryDict에서 그들을 찾을 수 없습니다. form 태그는 JavaScript를 통해 POST를 수행하고 JavaScript를 통해 값을 수집하지 않는 한 POST의 일부로 제출하려는 모든 요소를 ​​포함해야합니다.

+0

안녕하세요, Brandon, 답장을 보내 주셔서 감사합니다. 그래서 당신의 제안을 명확히하기 위해서, 나는 첫 번째 루프 바깥에 form 태그를 두어야하고 두 번째 루프 이후에 폼을 끝내야한다.각 레코드에 대해 제출 단추가 있는데, 폼에서 어떤 레코드가 업데이트되고 있는지 알 수 있을지 궁금하십니까? – dlyxzen

+0

시도 :

all of the form elements in the right column
해당 구조체를 사용하면 모든 양식 요소가 제출됩니다. – Brandon

+0

@ baz00r 각 행에 제출 버튼을 가지고 있다는 의견에 기반합니다. 그것에 대해 할 수있는 몇 가지 방법이 있습니다. 내 대답을 예제로 업데이트하겠습니다. – Brandon

관련 문제