2013-07-24 3 views
0

저는 장고를 처음 사용합니다. 템플릿을 배열로 전달할 때 뷰를 사용할 수있는 방식으로 블록 상속 (복수 script 또는 style 태그)을 사용하여 여러 번 템플릿에서 html을 반복하는 것이 가장 좋은 방법인지 알고 싶습니다.Django 템플릿 반복 패턴

여러 상속과 같은 것을 사용하여이 작업을 수행 할 수 있다고 생각했지만 어떻게 구현해야할지 모르겠다.

답변

1

정확하게 이해하면 다음과 같이 할 수 있다고 생각합니다.

def ExampleView(request): 
    items=___ #Whatever objects you want to work on 
    return render(request, 'template.html', {'items': items,}) 

그리고 템플릿.

template.html 
... 
{% for item in items %} 
    <-- Whatever you want to do for each item --> 
{% endfor %} 

오해하는 경우 알려 주시기 바랍니다.

1

흠 당신의 질문은 아직 명확하지 않습니다. 그러나 일반적으로 이것은 장고에서 템플릿을 만드는 방법입니다.

base.html이라는 주 파일이 하나 있는데, 다른 모든 템플릿이 확장/상속하는 기본 템플릿입니다. base.html에서 당신이 block를 정의 할 수 있습니다, 그리고 아이 템플릿, 당신은 그 블록에 정보를 추가 할 수 있습니다 additional_css, contentadditional_js :

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Title</title> 

    <link rel="stylesheet" href="{{ STATIC_URL }}css/main.css"> 
    {% block additional_css %}{% endblock %}   

    <script src="{{ STATIC_URL }}js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script> 
</head> 

<body> 
    {% block content %}{% endblock %} 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    {% block additional_js %}{% endblock %} 
</body> 
</html> 

그래서 당신이 예에서 볼 수있는, 내가 3 개 블록을 정의했다. 아이 템플릿에서 수행 할 수 있습니다 그 블록을 확장하고, 예를 들어 템플릿 이름 child.html이, 원하는 정보를 포함

당신이 블록의 템플릿에 목록을 통과하려면
{% extends "base.html" %} 

{% block additional_css %} 
<link rel="stylesheet" href="{{ STATIC_URL }}css/child.css"> 
{% endblock %} 

{% block content %} 
<h1>Welcome to my site!</h1> 
{% endblock %} 

, 즉 정직의를. 보기에서 전달 된 사용자의 목록이 호출 all_js_files 말을하자, 템플릿을 가질 수 있습니다

{% block additional_js %} 
    {% for js_file in all_js_files %} 
     <script src="{{ js_file }}"></script> 
    {% endfor %} 
{% endblock %} 

그냥 당신에게 기본 아이디어를 제공 할 수 있습니다.