Django 附加斜杠不工作

Django 附加斜杠不工作,django,django-views,Django,Django Views,我有这个urlConf,它在使用尾部斜杠访问时工作正常 urlpatterns = patterns('', url(r'^allvideo/$','my.views.allvideo')) 即使 APPEND_SLASH=True 当请求的尾部缺少斜杠时,它会给我属性错误“'str'对象没有属性'resolve'” 有什么想法吗 不确定根本原因是什么,但这些可能有助于您解决问题或缩小范围: (1) 您是否尝试过使用实际视图函数作为参数(而不是字符串): (2) 或使用url函数跳过: ur

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

urlpatterns = patterns('', url(r'^allvideo/$','my.views.allvideo'))
即使

APPEND_SLASH=True
当请求的尾部缺少斜杠时,它会给我属性错误“'str'对象没有属性'resolve'”


有什么想法吗

不确定根本原因是什么,但这些可能有助于您解决问题或缩小范围:

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

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

urlpatterns = patterns('', (r'^allvideo/$','my.views.allvideo'))

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

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


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

这肯定会解决您的问题。您可以给url加上或不加尾随斜杠,它将给您相同的结果

在URL文件中

urlpatterns = patterns('', url(r'^allvideo/?$','my.views.allvideo'))
在尾部斜杠后添加问号。
当您输入一个url时,它将首先使用尾随斜杠进行检查,或者在不使用尾随斜杠的情况下进行匹配,并且在任何一种情况下都会给出相同的响应。希望这对你有所帮助。愉快的编码。

即使看起来难以置信,我也遇到了同样的问题,只是重新启动开发服务器就解决了它。请记住:

python manage.py runserver

如果您添加了一些自己的中间件,那么中间件的顺序很重要。我有一个类似的例子,斜杠在前面工作,添加了一个中间件项就破坏了它。切换顺序后,一切又开始工作。

你的
中间件类中安装了吗?
?是的,有commonMiddleware吗?你可以发布回溯吗?我已经在这里粘贴了回溯:这个回溯看起来你的url.py文件有问题——好像里面有一个字符串而不是url()tuple someIt可以很好地使用尾部斜杠,正如我在问题中提到的。。。prb只在缺少尾随斜杠的情况下才会出现。可能删除了尾随斜杠后,它会匹配与您预期不同的url模式。我认为这是最好的解决方案。不,这不是因为同一页面将有两个url。正如@Natim所说,只是添加了一些上下文:有两个url而不是一个url对SEO有害。此外,您不必围绕假定已经有解决方案的框架编写代码。有关为什么这是一个糟糕的解决方案的深入讨论,请参阅。对我来说,这是通过确保CommonMiddleware位于LocaleMiddleware之下而解决的。这在迁移到Django 3.1时对我起到了作用:
python manage.py runserver