Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 格式化符号并添加意外字符_Python_Python 3.x_Djoser - Fatal编程技术网

Python 格式化符号并添加意外字符

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

使用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
我尝试了以下解决方案,但没有一个有效
(\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,
        ...
    },
]