【问题标题】:django trailing slash not being added没有添加 django 斜杠
【发布时间】:2012-05-27 22:46:56
【问题描述】:

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

http://127.0.0.1:8000/stories

我明白了:

Request Method:     GET

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

"stories" does not exist

然后我检查了 urls.py,我看到了:

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

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

#appends a slash if nothing is found without a slash.
APPEND_SLASH = True

不应该像上面设置的APPEND_SLASH,不带斜线的url 301重定向到带斜线的url,然后加载网页吗?

如果我手动将斜线添加到 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',
)

更新:

当我尝试访问 url 时,来自页面上的错误消息:

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})
    )

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

所以 url 查找的事情是找到我输入的所有 url,认为它们是 css 条目。我输入了 media_root(我的 css 等文件所在的文件夹)和 media_url(我用来指示获取静态文件的 url)的值,一切都很好。

【问题讨论】:

标签: django


【解决方案1】:

"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')

了解实际匹配的视图。

【讨论】:

  • 啊。你是对的!虽然我在一些没有斜线的页面上收到“找不到页面”错误,这让我很失望。问题中的解释。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 2011-05-25
  • 1970-01-01
  • 2018-12-28
  • 2011-01-31
  • 2018-06-29
  • 2012-01-12
  • 2015-02-06
相关资源
最近更新 更多