
假如在 urls.py 中有一个视图函数: path("/index", view.index, name="index")
在 Django 模板那边可以用 {% url "index" %} 把这个 url (/path/index )生成。
我想问一下,假设我想生成的 url 附加 GIT 请求参数,例如: /path/index?foo=bar, 那我 Django 模板那边的 url 该怎么写?
1 iiduce 2018 年 11 月 16 日 这个是最基本的,看一下官方文档。 |
2 chengxiao 2018 年 11 月 16 日 {% url "index" %}/?foo=bar ,不过记得官方并不推荐这种写法 ,"/path/index/foo/bar/",一般是这样写 |
3 hzwjz 2018 年 11 月 16 日 via Android 不用生成的,想获取 foo 的值,可以这样子 request.Get.get('foo')。 |
7 rockdodos 2018 年 11 月 16 日 url.py:path("/index/<str:foo>", view.index, name="index") templates:{% url "index" bar %} |
8 wonderay 2018 年 11 月 16 日 {% url 'some-url-name' arg1=v1 arg2=v2 %} 官方文档里没有么???还是你根本不看 https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#url google 一下也很快会得到答案 https://stackoverflow.com/questions/25345392/how-to-add-url-parameters-to-django-template-url-tag 还那么理直气壮的怼回复的人 |
11 hellojay 2018 年 11 月 16 日 文档没有就去看源代码。 |
12 tzhhahaha 2018 年 11 月 16 日 http://www.liujiangblog.com/course/django/ 给楼主提供一个链接。。。 |
13 iiduce 2018 年 11 月 16 日 你怼一下,我又看了一遍问题,结合下面你的回复,才理解你的意思。恕我愚钝,抱歉了。 我现在理解是,你想在模板中生成一个 url,这个 url 附带当前页面的 get 动态参数。 1、urls.py 文件中应该不能直接实现。 2、#3 的方法可以。能用就好,优雅其次。 3、我平时用的方法,在当前页面的 view 中 request.get 参数,放到模板变量{get_param}中,在模板里{% url "index" %}/?foo={get_param}。相比之下,优雅些?好处在于,方便在 view 中对 get 到的 param 做一些逻辑判断和处理。 |
15 ltoddy OP |
17 xpresslink 2018 年 11 月 16 日 楼主这个问题简直无离头啊? 在模板里直接这么写不就行了么? <a href=" {% url "index" %}?foo=bar"> |
18 ltoddy OP @xpresslink 你不觉得很 ugly 吗。 |
19 xpresslink 2018 年 11 月 16 日 补充一下,这样生成的 url 是 /path/index/?foo=bar 要多一个 / 但是工作是正常的。 |
20 ltoddy OP @xpresslink ok,我下午试试 |
21 xpresslink 2018 年 11 月 16 日 |
22 lixuda 2020 年 12 月 24 日 也遇到这个问题,flask url 是可以直接拼接 get 参数,django 找了 1 圈,没有发现,好像只能自己拼接。楼主不知道有没有找到比较优雅方式 |
25 lixuda 2020 年 12 月 28 日 @ltoddy ``` frm 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> ``` 是类似这样吗 |