Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建标记索引Django_Django_Tags - Fatal编程技术网

创建标记索引Django

创建标记索引Django,django,tags,Django,Tags,我使用创建一个博客标签系统。如何分离和过滤对象,以便只显示具有选定标记的对象?有点像点击django时StackOverflow的效果 它将为您提供所有标记为django的问题。我尝试了上描述的方法,但得到的索引器:元组索引超出范围。这是我正在使用的代码: url(r'^tagged/(?P<tag>[\w-]+)/$', TagView.as_view(), name='tag_url'), class TagView(ListView): context_object_

我使用创建一个博客标签系统。如何分离和过滤对象,以便只显示具有选定标记的对象?有点像点击django时StackOverflow的效果

它将为您提供所有标记为django的问题。我尝试了上描述的方法,但得到的索引器:元组索引超出范围。这是我正在使用的代码:

url(r'^tagged/(?P<tag>[\w-]+)/$', TagView.as_view(), name='tag_url'),

class TagView(ListView):
    context_object_name = 'blog'
    template_name = 'links/index.html'
    def get_queryset(self):
        return Blog.objects.filter(tags__name__in=[self.args[0]])
    def get_context_data(self, **kwargs):
        context = super(TagView, self).get_context_data(**kwargs)
        context['requested_tag'] = self.args[0]
        return context

<a href='{% url tag_url tag=tag %}'>{{ tag.name }}</a>
tag-list.html:

{% block content %}
  stuff
{% for blog in blog_list %}
  {{ blog.article }}
  {{ blog.name }}
{% endfor %}
{% endblock %}
模板中不存在blog_列表,并且没有可用的blog对象。相反,只有“stuff”被呈现到模板中。任何想法都很感激!谢谢

这个答案基于“编辑:基于@catherine建议的TagView:”

class TagView(ListView):
    model = Blog
    ......

    def get_queryset(self):
        # Fetch the queryset from the parent get_queryset
        queryset = super(TagView, self).get_queryset()
        return queryset.filter(tags__name__in=self.kwargs['tag'])
您在
get\u queryset
方法中有一个输入错误:

return queryset.filter(tags__name__in=self.kwargs['tags'])
您使用的是
标记
,而不是
标记
,因此它应该是:

return queryset.filter(tags__name__in=[self.kwargs['tag']])

导游:对不起,这不是我需要的。我试图弄清楚如何配置我的url和视图来创建标记的存档索引。因此,如果用户单击某个标记,例如
test
,它将链接到所有对象的集合,这些对象都具有相同的标记:
example.com/taged/test/
。与StackOverflow相同,如果您单击标记
django
,它会将您链接到标记为django的问题集合:
StackOverflow.com/questions/taged/django/
。不过,谢谢你的意见,我也是。谢谢你的意见!您希望它是精确的还是只包含django标记?不只是查找django标记,而是查找链接以匹配数据库中存在的任何标记。感谢您在上面列出的
TagView
中使用
def get__queryset
时提出的任何想法,但仍会导致错误
元组索引超出范围。如果您有任何想法,请在上面添加回溯。谢谢谢谢你的想法和支持@catherine(+1)!但是,我仍然无法访问与给定标记关联的博客对象。我已经添加了我在上面使用的完整代码。任何想法都值得赞赏!我也试过了,但还是不起作用。模板中只显示
内容
,没有可用的
博客
对象。谢谢你的意见,如果你有任何我遗漏的其他想法,我将不胜感激。谢谢实际上,它应该是
返回queryset.filter(tags\uu name\uu in=[self.kwargs['tag']])
,我正在更新答案。@NickB您是否尝试将参数作为列表。这应该行得通。
return queryset.filter(tags__name__in=[self.kwargs['tag']])