gpt4 book ai didi

具有查询参数的Django URL模板

转载 作者:行者123 更新时间:2023-12-04 16:35:49 25 4
gpt4 key购买 nike

我正在尝试通过我的 View 将查询参数传递到链接中,但是它使我无法很好地实现这一目标。

我的模板如下:

<a class="link-button" href="{% url 'videos:index' %}?tag={{ tag }}&page={{ next }}">Next</a>

这返回了我想要的:
http://127.0.0.1:8000/videos/?tag=1&page=2

尽管此方法有效,但它非常脆弱,无法处理 None值,因此必须有一种更好的方法。

我试图通过 url模板标签传递它,但它似乎并不是我想要的,因为它需要对路径的url配置进行更改:
{% url 'videos:index' page=next tag=tag %}

是否有执行此操作的实际方法或可以用来获取参数的模板标签?我尝试搜索此方法,但它给了我很多旧结果,并且提供了更多路径网址,例如: /videos/page-1/tag-1/,我不需要。

我希望做这样的事情:
<a href="{% url 'videos:index'}?{% params page=next tag=tag %}">Next</a>

最佳答案

没有不支持内置,但是您可以自己添加一个。例如,您可以定义以下模板标签。例如,我们可以用黑体字构造文件:

app/
templatetags/
__init__.py
urlparams.py

urlparams.py中,我们定义:
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 ''

然后,在模板中,我们可以加载模板标签,然后将其与以下代码一起使用:
{% load urlparams %}

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

请注意,严格来说,URL参数可以多次包含相同的 key 。这是不可能的。因此,我们无法生成所有可能的URL参数,但这通常很少见,我认为这并不是一个好主意。

关于具有查询参数的Django URL模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51375759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com