尝试将Django ListView中的查询词作为具有多对多引用的页面的平铺引用
长期读者,第一次提问者。谢谢你的帮助。 我正在尝试为每个文档标记为生成的每个页面添加标题。因此,如果它被标记为“press release”,页面将显示带有该标记的所有文档的列表,以及顶部带有标题“press release”的标题。就我个人而言,我不知道如何在模板中引用标记。任何帮助都将不胜感激尝试将Django ListView中的查询词作为具有多对多引用的页面的平铺引用,django,django-templates,django-views,Django,Django Templates,Django Views,长期读者,第一次提问者。谢谢你的帮助。 我正在尝试为每个文档标记为生成的每个页面添加标题。因此,如果它被标记为“press release”,页面将显示带有该标记的所有文档的列表,以及顶部带有标题“press release”的标题。就我个人而言,我不知道如何在模板中引用标记。任何帮助都将不胜感激 from django.shortcuts import render, get_object_or_404 from .models import Document, Tag from django
from django.shortcuts import render, get_object_or_404
from .models import Document, Tag
from django.views.generic import ListView
class DocumentList(ListView):
template_name = 'documents/document_list.html'
def get_queryset(self):
self.tag = get_object_or_404(Tag, name=self.kwargs['tag'])
return Document.objects.filter(tags = self.tag)
模板:
{% extends 'base.html' %}
{% block content %}
<div class= 'container'>
<div class="panel panel-default">
<!-- Default panel contents -->
<div class="panel-heading">WHAT GOES HERE!?!</div>
<div class="panel-body">
<p>.These files will assist in</p>
</div>
<table class= '.table-responsive'>
{% for Document in object_list %}
<tr>
<td>{{ Document.name }}</td>
<td>{{ Document.discription }}</td>
{% endfor %}
</div>
{% endblock %}
{%extends'base.html%}
{%block content%}
这里有什么!?!
。这些文件将有助于
{对象_列表%中的文档为%0}
{{Document.name}
{{Document.description}
{%endfor%}
{%endblock%}
url.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^(?P<tag>[\w-]+)/index/$', views.DocumentList.as_view(), name = 'documentlist'),
]
从django.conf.url导入url
从…起导入视图
URL模式=[
url(r'^(?P[\w-]+)/index/$,views.DocumentList.as_view(),name='DocumentList'),
]
如果要将其添加到模板中,必须将其添加到上下文中。最好的方法是在视图类上定义get\u context\u data
:
def get_context_data(self, **kwargs):
context = super(DocumentList, self).get_context_data(**kwargs)
context['tag'] = self.tag
return context
现在您可以通过{{tag}
在模板中访问它