如何在Django视图中获取/ test /?grid-view或/ test /?list-view'

时间:2012-05-19 04:50:13

标签: django django-views django-urls

我有一个页面可以通过列表或网格视图通过jQuery查看,但我希望URL显示它是什么视图 - 特别是当用户分页时,他们不必重新点击他们想要查看的内容 - 所以类似这样的事情:/test/?grid_view/test/?list_view

我一直在尝试使用request.GET.get,但它似乎没有用。以下是我到目前为止的情况:

def test (request):
    grid_view = request.GET.get('grid_view')
    list_view = request.GET.get('list_view')
    if grid_view:
        return render_to_response('grid_view.html', {}, context_instance=RequestContext(request))
    elif list_view:
        return render_to_response('list_view.html', {}, context_instance=RequestContext(request))
    else:
        return render_to_response('default_view.html', {}, context_instance=RequestContext(request))

然后在我的主模板中,我会将不同的视图指向<a href="/?list_view/">list view</a>等等。可能有更好的方法来做到这一点,所以任何建议也会受到赞赏。

2 个答案:

答案 0 :(得分:2)

空字符串的计算结果为False,这就是您的GET请求查询字符串参数将包含的内容。

您可以将代码修改为:

if 'grid_view' in request.GET or 'grid_view/' in request.GET:
    pass
elif 'list_view' in request.GET or 'list_view/' in request.GET:
    pass

或者:

if request.GET.has_key('grid_view') or request.GET.has_key('grid_view/'):
# ...

答案 1 :(得分:0)

这不是GET参数。使用request.META['QUERY_STRING']获取查询字符串。