Django 尾随斜杠/&引用;未添加到根url

Django 尾随斜杠/&引用;未添加到根url,django,apache,.htaccess,apache-config,Django,Apache,.htaccess,Apache Config,我最近遇到了一个我无法解决的非常奇怪的问题。 我用mod_wsgi和apache运行django,问题是 www.example.com/subdir 没有被引导到 www.example.com/subdir/ url.py如下所示: import os from django.conf.urls.defaults import * from fileupload.views import PictureCreateView, PictureDeleteView urlpatterns

我最近遇到了一个我无法解决的非常奇怪的问题。 我用mod_wsgi和apache运行django,问题是

www.example.com/subdir
没有被引导到

www.example.com/subdir/
url.py如下所示:

import os
from django.conf.urls.defaults import *
from fileupload.views import PictureCreateView, PictureDeleteView

urlpatterns = patterns('',
    (r'^$', PictureCreateView.as_view(), {}, 'upload-new'),
    (r'^delete/(?P<pk>\d+)$', PictureDeleteView.as_view(), {}, 'upload-delete'),
    (r'^fileupload/media/(.*)$', 'django.views.static.serve', 
    {'document_root':os.path.join(os.path.abspath(os.path.dirname(__file__)),'media')}),

)
- /var/www/html/cloudcv/
    + apache
    -fileupload
         urls.py
         views.py
         <other files>
    settings.py
    <other files>
另外,为了让事情更清楚,当我将liker'^new$'而不是r'^$' 文件目录结构如下:

import os
from django.conf.urls.defaults import *
from fileupload.views import PictureCreateView, PictureDeleteView

urlpatterns = patterns('',
    (r'^$', PictureCreateView.as_view(), {}, 'upload-new'),
    (r'^delete/(?P<pk>\d+)$', PictureDeleteView.as_view(), {}, 'upload-delete'),
    (r'^fileupload/media/(.*)$', 'django.views.static.serve', 
    {'document_root':os.path.join(os.path.abspath(os.path.dirname(__file__)),'media')}),

)
- /var/www/html/cloudcv/
    + apache
    -fileupload
         urls.py
         views.py
         <other files>
    settings.py
    <other files>
-/var/www/html/cloudcv/
+阿帕奇
-文件上传
url.py
views.py
设置.py
此处“其他文件”指目录中的其他文件

更新1:
orokusaki指出了上传删除url中的一个新错误,并将其答案更新为正确。只需指出这一点,因为它可能对其他获得此答案的人有所帮助。

这实际上是现代浏览器试图美化HTTP的产物。如果从URL栏复制URL(或查看HTTP头),可能会看到尾部的斜杠确实在那里

更新 我没有仔细查看你的
url.py
。您只需执行以下操作:

urlpatterns = patterns('',
    (r'^$', PictureCreateView.as_view(), {}, 'upload-new'),
    (r'^delete/(?P<pk>\d+)/$', PictureDeleteView.as_view(), {}, 'upload-delete'),
    (r'^fileupload/media/(.*)$', 'django.views.static.serve', 
    {'document_root':os.path.join(os.path.abspath(os.path.dirname(__file__)),'media')}),

)
urlpatterns=patterns(“”,
(r'^$',PictureCreateView.as_view(),{},'上载新'),
(r“^delete/(?P\d+/$”,PictureDeleteView.as_view(),{},“upload delete”),
(r“^fileupload/media/(.*)$”,“django.views.static.service”,
{'document_root':os.path.join(os.path.abspath(os.path.dirname(_file__)),'media'),
)
请注意添加到
上传删除
URL的
/
(对希望以斜杠结尾的任何其他视图执行相同操作)。与设置文档相比,
APPEND\u SLASHES
的工作方式更好地记录在文档中。其要点是:如果A)
request.path
与应用程序中的任何URL模式不匹配,并且B)
request.path+'/'
与应用程序中的URL模式匹配,Django将重定向到后者


您的
上传删除
URL即使手动输入也不会匹配
/delete/123/
,因为额外的
/
与regexp不匹配。

您可以显示中间件设置吗。另外,
APPEND\u SLASH
设置是否设置为
False
?更新了问题。请检查一下您的设置?它需要
CommonMiddleware
enabledeah。它已启用。抱歉,我忘记将其添加到settings.py中。默认情况下这是正确的,所以我不认为这是解决问题的办法。嗯。。很抱歉我的noobness,但是我如何检查它是否在HTTP头中。但这仍然不能解决我的问题,我仍然需要找到一种方法将斜杠添加到URL中。然而,作为一种中间解决方案,我在页面加载时通过Javascript向URL添加了尾随斜杠。@HarshAgrawal-抱歉,我忽略了URL conf-answer updated中的错误。感谢您提供这些信息。我实际上没有遇到那个错误,但我很高兴你指出了这一点。但是,我不认为它解决了(r'^$',PictureCreateView.as_view(),{},'upload new')的错误,因为在这个url中没有添加尾部斜杠。