Django 通用模板 URL 参考



我正在构建一个应用程序,其中我将有 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 %}

我发现你可以使用 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

最新更新