如何使用从url传递的参数只允许一组字符串到Django模板?

时间:2014-10-01 07:07:04

标签: python django django-templates django-views django-urls

我在这样的模板中有以不同方式排序的项目列表。

views.py

class IndexView(generic.ListView):
    template_name = 'items/index.html'
    context_object_name = 'item_list'

def get_queryset(self):
    return Item.objects.all()

的index.html

<a  href="http://127.0.0.1:8000/items/cat/release_date">Latest</a>
{% for movie in movie_list|dictsortreversed:"release_date"   %}
{% endfor %}

<a  href="http://127.0.0.1:8000/items/cat/rating">Popular</a>
{% for movie in movie_list|dictsortreversed:"rating"   %}
{% endfor %}

<a  href="http://127.0.0.1:8000/items/cat/pub_date">Recent</a>
{% for movie in movie_list|dictsortreversed:"pub_date"   %}
{% endfor %}

现在,正如您所看到的,我给出了每个类别的链接(release_date,rating,pub_date),因为我想在根据类别排序的模板中访问它们。

这就是我所做的并且不起作用。如何解决这个问题?

urls.py

url(r'^cat/(?P<cat>\D+)', views.CatView.as_view(), name='cat'),

view.py

class CatView(generic.ListView):
    template_name = 'items/cat.html'
    context_object_name = 'item_list'

def get_queryset(self):
    return Item.objects.all()
def get_context_data(self, *args, **kwargs):
    context = super(CatView, self).get_context_data(*args, **kwargs)
    context['cat'] = self.kwargs.get('cat')
    return context

cat.html

{% for item in item_list|dictsortreversed:cat  %}

1)我不想让所有类型的字符串都通过url。如何只传递选定的字符串,在这种情况下(rating,release_date,pub_date)。

2)有人可以提出一种优雅的方法吗? PS:编程新手。

0 个答案:

没有答案