django尾随斜线没有被添加

bha*_*ral 5 django

所以我有一个django应用程序,我访问这个网址:

http://127.0.0.1:8000/stories
Run Code Online (Sandbox Code Playgroud)

我得到这个:

Request Method:     GET

Request URL:    http://127.0.0.1:8000/stories

"stories" does not exist
Run Code Online (Sandbox Code Playgroud)

然后我看看urls.py,我看到:

#stories
url(r'^stories/$',
    StoryShowView.as_view(
        context_object_name='story_list',
        template_name='accounts/viewAndAddStory.html')
),
Run Code Online (Sandbox Code Playgroud)

最后,我看看我的settins.py,我看到:

#appends a slash if nothing is found without a slash.
APPEND_SLASH = True
Run Code Online (Sandbox Code Playgroud)

不应该,APPEND_SLASH设置如上,没有斜杠的网址被301重定向到斜杠的网址,然后加载网页?

如果我手工添加斜杠的URL,然后在页面加载预期,大家有一些茶,早敲断.

更新:

我在settings.py中也有这个条目:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

更新:

从我尝试访问网址时页面上的错误消息:

Django版本:1.3.1

解决:亲爱的,所以okm对钱很感兴趣.问题是我的网址 - 在底部,我有这个:

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:],
        'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True})
    )
Run Code Online (Sandbox Code Playgroud)

然而,我没有做的是MEDIA_URL和MEDIA_ROOT没有输入我的settings.py- 他们都只是空字符串('')

所以网址找到的东西是找到我输入的所有网址,认为它们是css条目.我输入了media_root(我的css等文件所在的文件夹)和media_url(我用来表示获取静态文件的URL)的值,一切都很好.

okm*_*okm 9

"does not exist"应该是这样的"Page not found".因此,我怀疑你没有面对正常的404,而是由于错误配置的urlconf中的一些不匹配的视图而引发的404.例如,我发现django.views.static.serve会提高Http404('some_path does not exist'),你可以检查urls.py以确保视图static.serve不匹配等路径/stories吗?

如果有匹配,Django将不会附加后缀斜杠并自动重定向.

你可以检查一下

from django.core.urlresolvers import resolve
resolve('/stories')
Run Code Online (Sandbox Code Playgroud)

知道哪个视图实际匹配.