请不要允许任意排序:这是一个安全漏洞,因为用户可以根据文章作者的性别进行排序
Post
,这可能是您想要保护的数据。你应该列出一系列可接受的选择,因此:
def get_queryset(self):
query = self.request.GET.get('q')
sort = self.request.GET.get('order_by', '-date')
if sort not in ['date', '-date', 'votes', '-votes']:
sort = '-date'
return Post.objects.filter(
Q(title__icontains=query) | Q(title__icontains=query)
).order_by(sort)
然后,url应该如下所示:
<a href="{% url 'search' %}?q={{ query|urlencode }}&order_by=-votes">votes</a>
具有
'search'
指向此视图的路径的名称。
笔记
:也许值得一看
django-filter
Â
[GitHub]
基于
QueryDict
以更具陈述性的方式。