附加斜线不起作用

use*_*364 10 django django-views

我有这个urlConf和它工作正常,同时使用尾部斜杠访问:

urlpatterns = patterns('', url(r'^allvideo/$','my.views.allvideo'))
Run Code Online (Sandbox Code Playgroud)

即使

APPEND_SLASH=True
Run Code Online (Sandbox Code Playgroud)

它给我属性错误"'str'对象没有属性'resolve'",当请求使用缺少尾部斜杠时

任何的想法??

Ian*_*and 15

APPEND_SLASH不会无条件地发生 - 只有在尝试所有现有的URL模式(以及相关视图,如果匹配的话)之后,它才会生效,Django即将返回404.

如果是这种情况,并且原始请求最后没有斜杠,那么Django会检查是否有任何URL模式与尾部斜杠匹配.如果是这样,它会发出HTTP重定向.

如果您的任何URL模式与原始请求匹配(没有斜杠),那么Django将首先尝试该模式.如果这会引发异常,那么你会看到它(我怀疑这就是发生的事情).Django永远不会发出重定向.

  • 也许删除了尾部斜杠后,它匹配了一个与您预期不同的 *不同* url 模式 (2认同)

Lyc*_*cha 0

不确定根本原因是什么,但这些可能会帮助您绕过它或缩小范围:

(1) 您是否尝试过使用实际的视图函数作为参数(而不是字符串):

from my.views import allvideo
urlpatterns = patterns('', url(r'^allvideo/$',allvideo))
Run Code Online (Sandbox Code Playgroud)

(2) 或者使用 url 函数跳过:

urlpatterns = patterns('', (r'^allvideo/$','my.views.allvideo'))
Run Code Online (Sandbox Code Playgroud)