2017-10-11 65 views
0

首先,我看了很多其他來源嘗試獲得幫助,但我覺得我基本上有他們擁有的東西,它只是不適合我。將字典從視圖傳遞到模板

所以我這是我的看法:

class MVS(ListView): 
    model = VTSI 
    template_name = "templates/mvs.html" 
    def index(request): 
     q = VTSI._meta.get_fields() 
     d = {} 
     for x in q: 
      z = x.verbose_name 
      d.update({z:z}) 
     return render(request, 'mvs', {'d': d}) 

,簡體中文,上面的類是試圖讓在模型文件中的所有列名,並讓他們的詳細名稱。然後,它會將這些冗長的名稱放入字典中,然後將其傳遞到模板以顯示所有這些列名稱。我以前嘗試傳遞一個列表,但我知道需要一個字典來將值傳遞給模板。

這是我有我的模板:

{% extends "base.html" %} 
{% load crispy_forms_tags %} 
{% load staticfiles %} 
{% block content %} 
<div class="row"> 
    <div class="col-sm-3"> 
    <h2>Description of Table</h2> 
    </div> 
</div> 
<table id="listview" class='table table-striped table-bordered'> 
<thead> 
<tr> 
    <th>Column One</th> 
    <th>Column Two</th> 
</tr> 
</thead> 
<tbody> 
{% for v in d.items %} 
<tr> 
<td> {{ v }}</td> 
<td> </td> 
</tr> 
{% endfor %} 
</tbody> 
</table> 
{% endblock %} 

這個模板是空白的,並沒有表現出任何的列名的。我錯過了什麼,如何解決這個問題?

+0

您的索引方法永遠不會被調用。 –

+0

如何以及在哪裏可以稱之爲? –

+0

你不會。這不是你寫基於類的視圖的方式。 –

回答

0

所以,我找到了答案,以我自己的問題,從上面user6731765的幫助後,我做了什麼是這樣的:

class MVS(ListView): 
model = VTSI 
template_name = "templates/mvs.html"  
def get_context_data(self, **kwargs): 
    context = super(MVS, self).get_context_data(**kwargs) 
    context['v'] = VTSI._meta.get_fields()   
    return context 

然後在我的模板,我這樣做:

{% for a in v %} 
<tr> 
    <td> {{ a.verbose_name }}</td> 
    {% empty %} 
    <td> Sorry, empty </td> 
    <td> </td> 
</tr> 
{% endfor %} 

編輯:對於未來的讀者,所有這些的主要觀點是dictionary_value ['something_here']部分。出於某種原因,我無法準確解釋,您需要將其添加到字典變量中,然後您將遍歷模板中的'something_here'部分。你可以去和你的其他方法來想要的東西,然後通過只是在做叫它:

dictionary_variable['something_here'] = self.some_other_method() 
return dictionary_variable 

在模板中,你會遍歷那something_here「再次部分顯示什麼。

1

看一看文檔使用ListView

試着改變你的代碼看起來更像

class MVS(ListView): 
    model = VTSI 
    template_name = "templates/mvs.html" 
    def get_context_data(self, **kwargs): 
     q = VTSI._meta.get_fields() 
     d = {} 
     for x in q: 
      z = x.verbose_name 
      d.update({z:z}) 
     return d 
+0

所以我正在瀏覽ListView,並使用了上面列出的內容。然而,在我的模板中,我仍然困惑於如何在字典中顯示對象。我有: '{%for v in object_list%} {{v}} {{vv}} {%endfor%}' 2 v的目的是看它是否會顯示它,但都不行。那麼我的模板將如何看待? –

相關問題