我有这样的URL配置和做工精细而以斜线:追加斜杠不工作
urlpatterns = patterns('', url(r'^allvideo/$','my.views.allvideo'))
即使
它给我的属性错误“访问‘STR’对象有没有属性“解决”“,当请求是与缺少的尾部斜杠
任何想法??
我有这样的URL配置和做工精细而以斜线:追加斜杠不工作
urlpatterns = patterns('', url(r'^allvideo/$','my.views.allvideo'))
即使
它给我的属性错误“访问‘STR’对象有没有属性“解决”“,当请求是与缺少的尾部斜杠
任何想法??
不知道什么是根本原因,但这些可以帮助你去解决它或它缩小:
(1)您是否尝试过或者使用实际的视图函数作为参数(而不是一串):
from my.views import allvideo
urlpatterns = patterns('', url(r'^allvideo/$',allvideo))
(2)或使用URL功能跳过:
urlpatterns = patterns('', (r'^allvideo/$','my.views.allvideo'))
thn didn work :( – user1170364 2012-02-28 06:56:03
APPEND_SLASH不是无条件地发生 - 它只是生效如果在尝试所有现有的URL后模式(和相关的视图,如果匹配的话),Django即将返回一个404.
如果是这样,并且原始请求在末尾没有斜线,那么Django会检查是否有任何网址格式会与尾部的斜线匹配。如果是这样,它会发出HTTP重定向。
如果你的任何URL模式匹配原始请求(没有斜杠),那么Django会先尝试一个。如果这引发了一个例外,那么你会看到它(我怀疑这是发生了什么)。 Django永远不会发出重定向。
它的工作正常与尾部斜杠,因为我在我的问题中提到... prb只发生尾部斜线丢失时 – user1170364 2012-02-28 06:55:23
也许随着尾部斜杠删除,它匹配* *不同* url模式你在期待 – 2012-02-28 14:38:10
这一定会解决您的问题。你可以提供带有或不带尾随斜线的URL,它会给你相同的结果。
在网址的文件,
urlpatterns = patterns('', url(r'^allvideo/?$','my.views.allvideo'))
最后的斜线后面添加问号。 当你输入一个url时,它将首先检查结尾的斜线,或者它将匹配它而没有结尾的斜线,并且在任何情况下都会给你相同的响应。希望这对你有一些帮助。快乐编码。
即使看起来令人难以置信,我也遇到同样的问题,只需重新启动开发服务器即可解决问题。只需要记住:
python manage.py runserver
如果您添加了一些自己的中间件,那么中间件的顺序很重要。我有一个类似的情况,斜线在之前工作,并添加中间件项目打破了它。切换订单后,所有事情再次开始工作。
对我来说,这是通过确保CommonMiddleware低于LocaleMiddleware来解决的。 – 2015-05-21 14:48:22
你有没有['django.middleware.common.CommonMiddleware'](https://docs.djangoproject.com/en/dev/ref/settings/#append-slash),安装在你的'MIDDLEWARE_CLASSES'中? – 2012-02-27 10:27:12
是的,commonMiddleware是 – user1170364 2012-02-27 10:28:41
你可以发布回溯? – jpic 2012-02-27 11:57:32