2013-09-26 29 views
1

我正在構建一個應用程序,我將有10個詳細視圖是相同的信息(名稱/ slug),但引用了不同的模型。在這個觀點中,我使用這個名字來表現出許多關係。Django通用模板URL參考

我想爲每個視圖使用單個模板文件。我遇到的問題是我有一個麪包屑,我想引用回當前的詳細視圖索引。

有沒有辦法通過get_context或通過其名稱提供URL來傳遞給模板?所以在generic_detail模板中,我想將url名稱作爲變量傳遞。

models.py

class Server(models.Model): 
    name = models.CharField(max_length=50) 
    datastore = models.ForeignKey('Datastore', default=DEFAULT_VALUE) 

class Datastore(models.Model): 
    name = models.CharField(max_length=50) 
    slug = models.SlugField() 

views.py

class DatastoreIndexView(ListView): 
    template_name = 'inventory/generic_index.html' 
    model = Datastore 


class DatastoreDetailView(DetailView): 
    template_name = 'inventory/generic_detail.html' 
    model = Datastore 
    context_object_name = 'object' 

urls.py

url(r'^datastore/$, DatastoreIndexView.as_vew(), name="datastore_index") 
url(r'^datastore/(?P<slug>[\w-]+)/$, DatastoreDetailView.as_vew(), name="datastore_detail") 

generic_detail.html

{% block breadcrumbs %} 
<ol class="nav breadcrumb--path"> 
    <li class="milli"><a href="{% url 'home' %}">Home</a></li> 
    <li class="milli"><a href=" Variable for URL for object.index ">{{ object.parent }}</a></li> 
    <li class="milli">{{ object.name }}</li> 
</ol> 
{% endblock breadcrumbs %} 
+0

你必須張貼您目前的代碼,以顯示在那裏你堅持,那麼你可能會得到一些幫助。 – professorDante

回答

0

我想通了,你可以使用urlresolvers.reverse叫名字的看法。

views.py

from django.core.urlresolvers import reverse 

    def get_context_data(self, **kwargs): 
     context = super(DatastoreDetailView, self).get_context_data(**kwargs) 
     context['index_view'] = reverse('datastore_index') 
     return context