如何在Django中向URL添加动态参数

2 投票
1 回答
837 浏览
提问于 2025-04-18 06:51

我有一个网站,用户可以管理自己的账户。

在他们的账户页面上,会显示他们提交的所有文章。

为了简单起见,我让用户可以选择每页显示多少篇文章。默认情况下,每页只显示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)

撰写回答