Python 格式化符号并添加意外字符
使用Im尝试为我的前端生成正确的url。我必须有我的url字符串和Djoser格式的符号,然后再发送到我的前端这个url。url看起来像:Python 格式化符号并添加意外字符,python,python-3.x,djoser,Python,Python 3.x,Djoser,使用Im尝试为我的前端生成正确的url。我必须有我的url字符串和Djoser格式的符号,然后再发送到我的前端这个url。url看起来像: https://localhost:4200/activate?id=MjA&token=540-cad5f834d5508ebdd78e 但是我得到的最终结果看起来像&之后的注释“amp;”: http://localhost:4200/activate?id=MjE&token=541-c0437e0afd6261fd4833
https://localhost:4200/activate?id=MjA&token=540-cad5f834d5508ebdd78e
但是我得到的最终结果看起来像&之后的注释“amp;”:
http://localhost:4200/activate?id=MjE&token=541-c0437e0afd6261fd4833
我尝试了以下解决方案,但没有一个有效(\u0026,{\u0026},{\u0026:c},&&&)
:
直接添加和将返回到前端相同的url和amp代码>隐藏在&
更新
Djoser模板覆盖
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
...
},
]
经过反复讨论后,发现Djoser想要发送一封激活电子邮件,内容是从中生成的。问题是Django默认进行HTML转义,因此&
字符被转换为HTML实体&代码>,这不是这里需要的
答案是通过一个过滤器将url标记为HTML安全的。这实际上意味着将{{url}}
替换为{url | safe}}
。最好的方法是创建一个新模板来覆盖Djoser提供的模板,并放入所需的内容。此模板需要作为“email/activation.html”驻留在项目模板区域中。在Django上也有一些文档
一旦模板正常工作,就应该直接发出url,而不进行转义。某种东西是HTML转义url,这就是它被转换的原因。我不确定你到底想完成什么,所以我不确定关闭逃跑是不是正确的答案。你说的“逃跑”是什么意思?反斜杠?我正在尝试生成用户激活url。在这一行中,djoser对url进行格式化,并在那里显示,我的意思是HTML特别处理“&”,因此,当您需要一个文字符号时,它必须被编码为“&;”。后一位实际上称为“HTML实体”,而“&”是描述实体的前导字符,因此需要将文字符号写为“&;”。现在我看到了发生的事情,是Django模板引擎在逃逸符号。在模板中,{{url}}
需要是{{url | safe}}
。我已经有一段时间没有在Django中这样做了,但我相信您可以创建一个站点模板来覆盖Djoser中的模板。哦,我明白了,谢谢,我现在要了解如何覆盖Djoser模板。
print("https://localhost:4200/activate?id={uid}\u0026token={token}".format(uid="MjA", token="540-cad5f834d5508ebdd78e"))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
...
},
]