我正在构建一个应用程序,其中我将有10个详细视图,它们是相同的信息(名称/ slug)但引用不同的模型。在该视图中,我使用该名称来显示多种关系。
我想为每个视图使用单个模板文件。我遇到的问题是我有一个面包屑我想引用回到当前的详细视图索引。
有没有办法通过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 :(得分: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