根据https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#url ,可以定义稍后检索的 URL,如下所示:
{% url 'some-url-name' arg arg2 as the_url %}
<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>
已关注 https://simpleisbetterthancomplex.com/snippet/2016/08/22/dealing-with-querystring-parameters.html ,我定义了一个标签 relative_url
如下:
from django import template
from django.utils.http import urlencode
from django.http import QueryDict
register = template.Library()
@register.simple_tag
def relative_url(field_name, value, query_string=None):
url = urlencode({field_name: value})
if query_string:
query_dict = QueryDict(query_string, mutable=True)
query_dict[field_name] = value
url = query_dict.urlencode()
return '?' + url
我想让这个标签与 as
一起使用,类似于内置 url
标签,这样我就可以做到
{% with params=request.GET.urlencode %}
{% relative_url field value params as action_url %}
{% endwith %}
然后像
一样引用它<form action="{{ action_url }}"> ... </form>
我正在查看 url
标记的 Django 源代码 https://github.com/django/django/blob/master/django/template/defaulttags.py ,但我发现它不太容易理解。
我怀疑我需要做的是返回一个URLNode
,而不是返回字符串
return URLNode(viewname, args, kwargs, asvar)
其中 asvar
是注入(inject)到上下文中的变量,但我不确定为每个构造函数参数填写什么。在本例中是否有一种简单的方法将变量注入(inject)到上下文中?
最佳答案
您实际上不需要执行任何操作:此功能内置于 simple_tag
装饰器中。只需按照您在该示例中所示的方式使用它即可。
参见 simple_tag
section 的最后一段文档。
关于python - 如何将变量注入(inject)到 Django 模板的上下文中,类似于内置 'as' 标签的 'url' 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264609/