Django 模板 url 如何构造请求参数

2018-11-16 07:27:10 +08:00
 ltoddy

假如在 urls.py 中有一个视图函数: path("/index", view.index, name="index")

在 Django 模板那边可以用 {% url "index" %} 把这个 url (/path/index )生成。

我想问一下,假设我想生成的 url 附加 GIT 请求参数,例如: /path/index?foo=bar, 那我 Django 模板那边的 url 该怎么写?

5176 次点击
所在节点    Python
26 条回复
xpresslink
2018-11-16 11:04:53 +08:00
@ltoddy 你这话无离头啊? url 参数就这得性。
你要嫌 urgly 本身就不应当用这个方式。
Django 本身有优雅的方式你不用啊
lixuda
2020-12-24 16:16:29 +08:00
也遇到这个问题,flask url 是可以直接拼接 get 参数,django 找了 1 圈,没有发现,好像只能自己拼接。楼主不知道有没有找到比较优雅方式
ltoddy
2020-12-27 21:43:47 +08:00
@lixuda 找到更好的方式了。
lixuda
2020-12-28 09:03:06 +08:00
@ltoddy 具体是怎么样实现的?谢谢
lixuda
2020-12-28 16:40:55 +08:00
@ltoddy

```
from django import template
from urllib.parse import urlencode

register = template.Library()

@register.simple_tag
def urlparams(*_, **kwargs):
safe_args = {k: v for k, v in kwargs.items() if v is not None}
if safe_args:
return '?{}'.format(urlencode(safe_args))
return ''

index.html

{% load urlparams %}

<a href="{% url 'videos:index'}{% urlparams page='1' tag='sometag' %}">Next</a>

```

是类似这样吗
ltoddy
2020-12-28 19:54:32 +08:00
@lixuda 是这样的,我的选择方式是脱坑 Python,目前主要搞 Go 和 Rust 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/508351

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX