gpt4 book ai didi

python - 设置与号格式会添加意外字符

转载 作者:行者123 更新时间:2023-11-30 21:58:50 25 4
gpt4 key购买 nike

使用Djoser我正在尝试为我的前端生成正确的网址。我的 url 字符串中必须包含 & 符号,并且 Djoser 在将其发送到我的前端之前会格式化此 url。网址如下所示:

https://localhost:4200/activate?id=MjA&token=540-cad5f834d5508ebdd78e

但我得到的最终结果看起来像注意“amp;” &之后:

http://localhost:4200/activate?id=MjE&token=541-c0437e0afd6261fd4833

我尝试了以下解决方案,但没有一个有效(\u0026, {\u0026}, {\u0026:c}, &&):

print("https://localhost:4200/activate?id={uid}\u0026token={token}".format(uid="MjA", token="540-cad5f834d5508ebdd78e"))
print("https://localhost:4200/activate?id={uid}{\u0026}token={token}".format(uid="MjA", token="540-cad5f834d5508ebdd78e")) <-- returns KeyError: '&'
print("https://localhost:4200/activate?id={uid}{\u0026:c}token={token}".format(uid="MjA", token="540-cad5f834d5508ebdd78e")) <-- returns KeyError: '&'

注意:我无法直接更改 format() 部分中的代码,这将由 Djoser 处理。我可以传递的部分实际上只是将字符串值分配给激活网址,如下所示: 'ACTIVATION_URL': 'activate?id={uid}{\u0026:c}token={token}', 所以我必须在这个字符串中写下我的解决方案。

注意2:我在木星上尝试过,一切正常,当我这样做时,我得到了正确的网址:

print("https://localhost:4200/activate?id={uid}\u0026token={token}".format(uid="MjA", token="540-cad5f834d5508ebdd78e"))

enter image description here

直接添加&会返回到前端与&后面的amp;相同的url

更新Djoser 模板覆盖

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
...
},
]

enter image description here

最佳答案

经过一番讨论,发现 Djoser 想要发送一封激活电子邮件,并且内容是从 a Django template 生成的。 。问题是 Django 默认进行 HTML 转义,因此 & 字符被转换为 HTML 实体 &,这不是这里所需要的。

答案是通过过滤器将 URL 标记为 HTML 安全。这实际上意味着将 {{ url }} 替换为 {{ url|safe }}。最好的方法是创建一个新模板来覆盖 Djoser 提供的模板并放入所需的内容。该模板需要作为“email/activation.html”驻留在项目模板区域中。 Django 中有一些关于 how this is done 的文档也是。

一旦模板正常工作,则应直接发出 URL,无需转义。

关于python - 设置与号格式会添加意外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54797037/

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