【问题标题】:how to add dynamic arguments to urls in django如何在 django 中为 url 添加动态参数
【发布时间】:2014-05-17 11:17:56
【问题描述】:

我有一个网站,我让用户管理他的帐户。

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

为了简单起见,我让他可以选择一页显示多少篇文章。默认情况下一页只显示10篇文章,这是由django分页功能完成的,如果用户想在一页显示20篇文章页面,我将参数添加到当前网址。

例如:?num=20

那么第二页的url应该是?num=20&page=2

问题是,一旦点击页面下一个按钮,url 变为 ?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 个参数需要发布。

【问题讨论】:

  • 您使用 POST 类型的请求?还是帖子只是名字?
  • 我认为您不能将 url 查询作为 urls.py 正则表达式的一部分。正则表达式总是在那里解析主 URL。因此,您只需要确保您的链接在模板中附加了 ?num=20 ,例如{% url 'post' %}?num=20
  • post 不是 POST 的名称

标签: python django url


【解决方案1】:

如果您使用?num=20&amp;sub=sport&amp;page=2 之类的 URL 参数,则它们位于 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多