url中的空格变量(django)

时间:2016-01-05 01:44:46

标签: python django url django-urls

我遇到与How to pass variables with spaces through URL in :Django相同的问题。我已经尝试了所提到的解决方案,但所有内容都以#34返回;您要查找的资源已被删除,名称已更改或暂时不可用。"

我正在尝试传递文件名示例:new 3

在urls.py中

var topModelsEnumerable = Model.Categories.SelectMany(c => c.TopModels != null);
在views.py中

    url(r'^file_up/delete_file/(?P<oname>[0-9A-Za-z\ ]+)/$', 'app.views.delete_file' , name='delete_file'),

url:demo.net/file_up/delete_file/new%25203 /

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

想一想;你不得不使用空格吗?如果没有,我认为你可能会发现你的模式(和变量)更容易使用。破折号或下划线,甚至正斜杠看起来更清晰,更可预测。

我也发现了这个:https://stackoverflow.com/a/497972/352452引用:

  

空格字符是不安全的,因为当URL被转录或排版或受到文字处理程序的处理时,重要的空格可能会消失并且可能会引入无关紧要的空格。

您也可以使用文字 mFragmentActivity.getSupportFragmentManager(); 捕捉空间。不确定。只想在脑海中留下一些想法。

答案 1 :(得分:0)

demo.net/file_up/delete_file/new%25203/

此网址经过双重编码。该空格首先编码为%20,然后%字符编码为%25。 Django只对URL进行一次解码,因此解码后的URL为/file_up/delete_file/new%203/。您的模式与文字%20不匹配。

如果你想坚持使用空格而不是不同的分隔符,你应该找到该URL的来源,并确保它只编码一次:demo.net/file_up/delete_file/new%203/