当在可浏览的API中呈现带有转义字符(在我的情况下,特别是和符号)的URL时,在href中将其不正确地转义。 这可能仅适用于“&”号。
例如,此URL:
http:// localhost :8000 / endpoint /?param1 =是+%26 +否&param2 =某些
将呈现为:
http:// localhost :8000 / endpoint /?param1 =是+&+否&param2 =某些东西
URL正确显示在a元素的值中……这仅适用于href。
抱歉,反应迟钝。
只是不同的呈现方式还是源HTML本身未转义?
嗨,汤姆,在HTML中看起来像这样:
<a href="http://localhost:8000/endpoint/?param1=Yes+&+No¶m2=something">http://localhost:8000/endpoint/?param1=Yes+%26+No¶m2=something</a>
太感谢了-为此可能值得尝试编写一个失败的测试用例。
理想情况下,这只会行使BrowsableAPIRendererer
,但对于完整的集成测试也可能没问题。
当然,我很乐意。 现在浏览测试套件...合适的位置应该在test_renderers.py的RendererEndToEndTests中吗?
听起来还可以。
这与DRF的urlize_quoted_links
调用的Django的smart_urlquote
urlize_quoted_links
,后者是在可浏览API中处理转换的原因。 我_认为链接文本和链接本身之间的区别可能是Django的转义内容,但老实说我不确定那里是否存在。
smart_urlquote
在quote
之前调用unquote
quote
,这会剥离原始的。 这是在https://github.com/django/django/commit/b70c371fc1f18ea0c43b503122df3f311afc7105中添加的,并已反向移植到Django 1.5+。
那么,我们是否在乎这不是客户会看到的,或者我们只是将其关闭?
从语义上讲,这仍然是正确的。
将其从bug推送到清理,因为这是边界。
DjangoCon指南-该票证的一般审阅-您希望行为如何,可以接受吗?
我在django-con sprint上,可以进行此工作。 我之前没有贡献过,所以我可能需要一些初步指导。 我目前正在阅读DRF的贡献者指南,在本地运行测试后,我可能会亲自或在irc上与某人打交道。
需要注意的地方-请随时在IRC上ping我,如果我在那儿没有响应,请使用Twitter。
由于优先级低和缺乏进展而关闭。
很高兴重新考虑是否有人愿意再次考虑这一点。
@tomchristie我知道这是一个小问题,但这仍然是一个错误。 如果您单击链接,它将转到错误的URL。 标记为低优先级似乎比结束有效问题更为合适。
有空的时候我会调查一下。
抱歉,我对此有不同的理解-URL没错,只是它以未转义的样式呈现了链接,我是否误解了?
IE。 cleanup
标签的原因,了解这是一个装饰性问题?
哦,我懂了。 对,那是正确的。 基本上,href和显示值都被转义,而不仅仅是显示值。
谢谢你这么好的图书馆,顺便说一句!
对不起,再说一次:)
对,那是正确的。
更正这是一个表面问题,还是更正我误解了,这是一个错误? :)
更正这是一个错误。 :)
关闭,因为这已通过https://code.djangoproject.com/ticket/22267修复
还没有看过这个,但是如果我们重复“ urlize”,我们是否还需要做其他事情? 还解决了什么版本? 而且,太好了! 耶!
在1.7.1中似乎未解决此问题,所以1.7.2或1.8? 这是我在Django 1.7.1中看到的行为:
>>> from django.utils.html import smart_urlquote, escape
>>> escape(smart_urlquote('http://qwerty.com'))
u'http://qwerty.com'
>>> escape(smart_urlquote('http://qwerty.com?blah=Yes+%26+No'))
u'http://qwerty.com?blah=Yes+&+No'
..和django master分支的现任负责人:
>>> from django.utils.html import smart_urlquote, escape
>>> escape(smart_urlquote('http://qwerty.com?blah=Yes+%26+No'))
u'http://qwerty.com?blah=Yes+%26+No'
urlize_quoted_links
最初是django.utils.html.urlize
的修改副本吗? https://github.com/django/django/blob/master/django/utils/html.py#L255 -L352明显不同,但我不能说出单独版本的原因。 似乎需要重新复制。
是的,它已经被复制了,因为原始格式不适用于包含单引号或双引号的“ http://example.org ”样式链接,并且没有简单的替代方法可以允许它。 如果存在很大差异,则可能是由于Django版本的逐步更改而我们的版本保持不变。
要重新打开此文件以确保我们有一个占位符票证,以确保得到解决。
由于存在更高优先级的3.0.1项,因此删除了此里程碑。
我想知道是否有可能从#2014中提取失败的测试用例
此评论https://github.com/tomchristie/django-rest-framework/pull/2014#issuecomment -61525348表示该问题已在上游Django中修复。 关闭此功能,但如果有人确认仍然存在问题,它将重新打开。
我只想确认它现在可以正常工作了:)
喜欢这个库,它已经可以很好地运行了,但是即使到那时它仍然会变得更好! 👍
最有用的评论
我只想确认它现在可以正常工作了:)
喜欢这个库,它已经可以很好地运行了,但是即使到那时它仍然会变得更好! 👍