2017-09-13 13 views
1

私はPythonとdjangoの初心者です。 ここでは、ウェブサイトを構築しようとしています。djangoプロジェクトのhtmlテンプレートにローカル変数を作成する方法は?

クラスターという名前のクラスを作成しましたが、これは実際には町や都市を意味します。 サブクラスとして、クラスター向けの学校を作成しました。 学校には、学校ごとに力を得るためのフィールドschool_strengthがあります。 各クラスターに属するすべての学校の合計強度を表示する必要があります。

これは、すべての学校の合計を計算するローカル変数強度を作成することで、クラスターの詳細についてhtmlテンプレートでこれを行う方法です。

<div class="col-sm-4 col-md-3"> 
     <div class="panel panel-default"> 
      <div class="panel-body"> 
       <a href="{% url 'music:cluster_detail' state.id region.id cluster.id %}"> 
        {% if cluster.cluster_logo %} 
         <img src="{{ cluster.cluster_logo.url }}" class="img-responsive"> 
        {% else %} 
         <h3>No image to display</h3> 
        {% endif %} 
       </a> 
       <h2>{{ cluster.cluster_name }}</h2> 
       <h4>{{ cluster.cluster_coordinator }}</h4> 
       <h4>{{ cluster.cco_number }}</h4> 
       <h4>{{ cluster.cco_email }}</h4> 
       {% for school in cluster.school_set.all %} 
        {% strength = strength + school.school_strength %} 
       {% endfor %} 
       <h4>{{ strength }}</h4> 
      </div> 
     </div> 
    </div> 
+1

これはテンプレートで計算する特別な理由で、Pythonコードではありませんか? – arjun27

+1

テンプレートで変数を使用することはできません。このロジックを作るテンプレートタグを作成する必要があります。しかし、よりよい方法は、 'view.py'でコードを使用するか、' ModelManager'を使用することです。 – AndMar

+0

特別な理由はありません。私はどのように変数を宣言して、それを私のview.pyで使うことができるのか説明できますか?私は本当に助けに感謝します。 –

答えて

3

withタグで変数を宣言できると思います。しかし、は、あなたがそれを働かせる方法では動作しません。以下はその例です。

{% with name="World" greeting="Hello" %}  
    <h1>{{ greeting }} {{name}}!</h1> 
{% endwith %} 

ので、より良い方法は、あなたがviews.pyで変数に格納し、HTMLテンプレートに渡すことができます。

views.py

strength=0 
for school in cluster.school_set.all(): 
    strength = strength + school.school_strength 

context['strength']=strength 

return render(request, 'template/html`, context) 

HTML

<h3>Strength Of Cluster: {{strength}}</h3> 

それがお役に立てば幸いです!!!!

+0

これは本当に助けになりました。ありがとうございました。 –

+0

cluster.school_set.all(): –

+0

あなたの本当にうれしいです。あなたを助けるために特権を感じます。このソリューションが役立ったと思われる場合は、この回答を選択できます。再度、感謝します。 –

関連する問題