Python Django不能在URL中使用带引号的字符?

Python Django不能在URL中使用带引号的字符?,python,django,Python,Django,我遵循并采纳了peppergrower的代码。但是,当我向url添加加密和带引号的字符并尝试访问此url时,Django失败,出现以下错误: 回溯最近一次呼叫上次: 文件 C:\Python27\lib\site packages\django\core\servers\basehttp.py,第行 283,在逃 self.result=applicationself.environ,self.start\u响应 文件 C:\Python27\lib\site packages\django\c

我遵循并采纳了peppergrower的代码。但是,当我向url添加加密和带引号的字符并尝试访问此url时,Django失败,出现以下错误:

回溯最近一次呼叫上次:

文件 C:\Python27\lib\site packages\django\core\servers\basehttp.py,第行 283,在逃 self.result=applicationself.environ,self.start\u响应

文件 C:\Python27\lib\site packages\django\contrib\staticfiles\handlers.py, 第68行,待命 返回self.applicationviron,启动\u响应

文件C:\Python27\lib\site packages\django\core\handlers\wsgi.py, 第264行,待命 logger.warning'UnicodeDecodeError错误:%s'%Request.path

UnboundLocalError:之前引用的局部变量“request” 分配

这类url示例如下所示。我注意到,只要%出现在url中,Django就会抛出上述异常。这没有多大意义,因为引用的字符已经没有Unicode了


我使用的是Django 1.3.1

有一些Django票证与本期相关。特别是以下第部分给出的5738:

问题是,尽管强烈建议使用UTF-8作为 对于非ASCII数据的编码,实际上并没有在任何规范中进行编码 例如,直到最近,RFC2396才完全开放。 只有在RFC3986中,IRI-to-URI编码才变得清晰

在此期间,部署了能够输出非UTF-8编码的系统 URI

因此,我将提交一个更改,将400个响应回传给 格式错误的输入非UTF-8,但也更容易覆盖 请求类,因此如果有人正在处理遗留系统,他们 可以使用子类WSGIRequestor或ModPythonRequest来处理解码 不管他们需要什么


本地主机URI对我们没有任何好处……我们的机器上运行的服务与您的不同。你能提供代码吗?这看起来像Django错误处理中的一个bug,不是吗?在核心Django代码中不应该存在这样的UnboundLocalError。是的,dkamins,这确实是一个bug。真正的错误是django无法处理url中的%,因为它是引用unicode的一部分。但当引发错误时,会发生UnboundLocalError。不管怎么说,引用的unicode应该像django doc说的那样很好,但实际上不行。GeorgiePorgie你说的引用的unicode是什么意思?我只是将上面的%示例放在我的URL中,没有收到任何错误。有关更多信息,请查看@GeorgiePorgie I stand corrected。当我测试它时,它看起来好像没有发生错误。我收到一个错误的400请求。我很想了解更多关于这个问题的信息。在我的例子中,unicode被引用为ascii纯文本,在url中应该是安全的。我见过很多网站都有这种被引用的url。Django捕获url并自动将其取消引用。我觉得它无法正确处理它。如果我正确阅读注释,则表示如果它们不是UTF-8,它无法处理。似乎就是这样。如果我没有在url中直接引用unicode,django似乎认为这很好。