2013-07-01 3 views
1

장고에서 동적 행렬 형식 (nrows x ncols)을 렌더링해야합니다.Django - 행렬을 렌더링하는 방법

def my_matrix(request): 
    [nrows,ncols] = [3,4] 

    my_form = MatrixForm(nrows=nrows,ncols=ncols) 

    return render_to_response('my_matrix.html', RequestContext(request, 
         {'matrix_form':my_form,"nrows":range(nrows),"ncols":range(ncols)})) 

는하지만 템플릿과 stucked입니다 :

class MatrixForm(forms.Form): 

    def __init__(self, *args, **kwargs): 
     self.ncols = kwargs.pop('ncols', 1) 
     self.nrows = kwargs.pop('nrows', 1) 

     super(MatrixForm, self).__init__(*args, **kwargs) 

     for i in range(0,self.ncols): 
      for j in range(0,self.nrows): 
       field = forms.CharField(label="",max_length=2) 
       self.fields['c_' + str(i) + '_' + str(j)] = field 

뷰는 다음과 같다 :

양식은 다음과 같다. 내 생각은 일반적인 이중 루프 (열과 행)를 수행 한 다음 행렬의 각 요소를 개별적으로 참조하는 것이지만 장고에서는 불가능합니다. {{matrix_form.c _ {{row} } _ {{col}}}} ...

수행을위한 권장 사항은 무엇입니까? 라벨을 포함하여 - -

+0

사용 표시 테이블의 레이블을 넣어 사용할 수 있습니다 ? –

+0

템플릿 태그를 사용하여 HTML을 렌더링합니다 – karthikr

+1

@karthikr 우리가 머리를 같이하면 가능한 대답을 하나 생성 할 수 있습니다;) –

답변

1

나는 또 다른 질문 here

표에서 솔루션을 복사 한 뷰에 내장되어야한다. forloop.first는

s. table = [ 
    ['', 'Foo', 'Bar', 'Barf'], 
    ['Spam', 101, 102, 103], 
    ['Eggs', 201, 202, 203], ] 

<table> 
    {% for row in table %} 
     <tr> 
     {% for cell in row %} 
      {% if forloop.first or forloop.parentloop.first %} <th> {% else %} <td> {% endif %} 
       {{ cell }} 
      {% if forloop.first or forloop.parentloop.first %} </th> {% else %} </td> {% endif %} 
     {% endfor %} 
     </tr> 
    {% endfor %} 
</table> 
관련 문제