【发布时间】:2011-12-30 23:47:52
【问题描述】:
我正在关注this thread 并采用胡椒种植者的代码。但是当我将加密和引用的字符添加到 url 并尝试访问此 url 时,Django 失败并出现以下错误:
Traceback(最近一次调用最后一次):
文件 “C:\Python27\lib\site-packages\django\core\servers\basehttp.py”,行 283,运行中 self.result = application(self.environ, self.start_response)
文件 "C:\Python27\lib\site-packages\django\contrib\staticfiles\handlers.py", 第 68 行,在 调用 return self.application(environ, start_response)
文件 "C:\Python27\lib\site-packages\django\core\handlers\wsgi.py", 第 264 行,在 调用 logger.warning('错误请求 (UnicodeDecodeError): %s' % request.path,
UnboundLocalError:之前引用的局部变量“请求” 作业
这种类型的示例网址是http://localhost:8000/customer/unsubscribe/%F1%CDE%A2%9DL%BF%21W%60%FF%04%D2%D2%3B%B1%FB%C9%8Ff%89%06O%FFY%E2_%16%9BnPM/。我注意到只要 % 出现在 url 中,Django 就会抛出异常。这没有多大意义,因为引用的字符已经有零个 unicode。
我正在使用 Django 1.3.1
【问题讨论】:
-
本地主机 URI 对我们没有任何好处...我们的机器上运行的服务与您不同。你能提供代码吗?
-
这实际上看起来像是 Django 错误处理中的一个错误,不是吗?像这样的核心 Django 代码中不应该有
UnboundLocalError。 -
是的,dkamins,这确实是一个错误。真正的错误是 django 无法处理 url 中的 %,因为它是引用的 unicode 的一部分。但是当引发错误时,就会发生 UnboundLocalError 。无论如何,令人沮丧的是,引用的 unicode 应该像 django doc 所说的那样正常工作,但实际上并没有。
-
@GeorgiePorgie “引用的 unicode”是什么意思?我只是将上面的 % 示例放在我的 URL 中,我没有收到任何错误。欲了解更多信息,请查看docs.djangoproject.com/en/1.3/ref/unicode/#uri-and-iri-handling
-
@GeorgiePorgie 我的立场是正确的。当我测试它时,它看起来好像没有发生错误。我收到 400 错误请求错误。我很想了解有关此问题的更多信息。