首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化符号并添加意外字符

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

Stack Overflow用户
提问于 2019-02-20 23:46:23
回答 1查看 1.4K关注 0票数 1

使用乔瑟,我试图为我的前端生成正确的url。我必须在我的url字符串中有个符号,而Djoser在将它发送到我的前端之前先格式化这个url。网址看起来是:

代码语言:javascript
复制
https://localhost:4200/activate?id=MjA&token=540-cad5f834d5508ebdd78e

但是我得到的最后结果看起来像注释"amp;“after &

代码语言:javascript
复制
http://localhost:4200/activate?id=MjE&token=541-c0437e0afd6261fd4833

我尝试了下面的解决方案,但它们都不适用于(\u0026, {\u0026}, {\u0026:c}, &&)

代码语言:javascript
复制
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: '&'

注意:I不能直接更改format()部件中的代码,这将由Djoser处理。我可以传递的部分实际上只是将字符串值赋值给激活url,比如:'ACTIVATION_URL': 'activate?id={uid}{\u0026:c}token={token}',,所以我必须用这个字符串编写我的解决方案。

NOTE2:,我在木星上试过,一切都很好,当我这样做的时候,我得到了正确的url:

代码语言:javascript
复制
print("https://localhost:4200/activate?id={uid}\u0026token={token}".format(uid="MjA", token="540-cad5f834d5508ebdd78e"))

直接将&添加到前端相同的url中,amp;&后面

更新 Djoser模板覆盖

代码语言:javascript
复制
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        ...
    },
]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 01:13:30

经过反复讨论,Djoser希望发送一封激活电子邮件,并且内容是从Django模板生成的。问题是Django在默认情况下执行HTML转义,因此&字符被转换为HTML,&amp;,这不是这里所希望的。

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

一旦模板正确工作,就应该直接发出url,而不需要转义。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54797037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档