将args和kwargs传递给反向Django
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将args和kwargs传递给反向Django相关的知识,希望对你有一定的参考价值。
我认为这是一个非常简单的问题,请问我一点。
我的链接设置如下:page/<key>
其中密钥是随机生成的密钥,在此处设置:
reverse('page', args=(key,))
但是,我也想将数据传递到page/<key>
端点。但是,如果我在此处将另一个变量添加到args中:reverse('page', args=(key, more_data))
,则在尝试打开位于page/<key>/<more_data>
此外,django不允许在一次反向调用中使用args和kwargs。那我该如何传递数据?谢谢!
reverse
只是构建URL,您需要重定向到它,您可以在视图中添加如下内容:return HttpResponseRedirect(reverse('page', kwargs={'key': 'value'}))
查看有关此文档:
https://docs.djangoproject.com/en/3.0/ref/urlresolvers/
如果是这种情况,我们将您的背景色示例张贴在另一个答案的注释中。有很多不同的方法可以实际使用从目标页面上获取的数据来显示颜色,因此我认为这超出了范围。如果您使用javascript进行此操作,URLSearchParams是您要研究的内容。
传递数据的标准方法是使用url查询参数(您有时在url中看到的?key=value
内容。
这是使用python和django生成通过电子邮件发送的url的方式:
from urllib.parse import urlencode
from django.urls import reverse
url_params = {"background_color": "#000000"}
url = reverse("page", kwargs={"key": generate_key()}) + f"?{urlencode(url_kwargs)}"
[如果要使发送的数据不那么明显,可以在base64中编码url params字典,然后将其作为“设置”参数发送,可以在javascript中解码和使用。
以上是关于将args和kwargs传递给反向Django的主要内容,如果未能解决你的问题,请参考以下文章
Django REST:Auth用户未传递给序列化程序错误 - 需要字段
如何在 django 的 ajax url 中传递 kwargs?未找到带有参数 '('',)' 的 '' 的反向操作。尝试了 1 种模式:['partners/analytics/(?P<id