如何在Django中向URL添加动态参数
我有一个网站,用户可以管理自己的账户。
在他们的账户页面上,会显示他们提交的所有文章。
为了简单起见,我让用户可以选择每页显示多少篇文章。默认情况下,每页只显示10篇文章,这是通过Django的分页功能实现的。如果用户想要每页显示20篇文章,我就会在当前的链接中添加参数。
比如说:?num=20
那么第二页的链接应该是?num=20&page=2
问题是,一旦点击下一页按钮,链接就变成了?page=2,这样就没有把num参数传给Django了。
而且我还有更多的参数需要传给Django,比如只显示体育类的文章,所以我还需要添加一个参数,比如
?num=20&sub=sport&page=2
但是我该怎么让它工作呢?
我知道的就是给每个参数一个值,比如
url(_(r'^post/(?P<num>\w+)/(?P<sub>\w+)/(?P<page>\w+)/$'), views.post, ),
我该如何设计这个链接呢?如果我有大约5个参数需要传递。
1 个回答
1
如果你在网址中使用像 ?num=20&sub=sport&page=2
这样的参数,那么你可以在 request.GET
中找到它们。
你可以用下面的代码来打印出这些参数的值:
print request.GET['num'], request.GET['sub'], request.GET['page']
你还可以创建自己的变量,像这样:
def test_func(request):
next_page_url = '%s?page=%s' % (request.path, int(request.GET['page'] + 1) if 'page' in request.GET else '%s?page=2' % (request.path)
return dict(next_page_url=next_page_url)