【问题标题】:Django | Cannot access URLs without a trailing "/"姜戈 |无法访问没有尾随“/”的 URL
【发布时间】:2021-05-09 08:03:52
【问题描述】:

我有一个 Django 应用程序,由于某种原因,我无法在没有尾随“/”的情况下加载我的 URL

我在实践中创建了其他 Django 应用程序,这不是问题,当我进入我的管理页面时我不需要一个,所以我无法弄清楚这里的设置有什么问题。

这是我的主要 URL 文件:

urlpatterns = [
    path('app/', include('app.urls')),
]

这是我的应用的 URL 文件:

urlpatterns = [
    path('subapp/', views.subapp, name='subapp'),
]

还有我的视图文件:

def subapp(request):
    return render(request, 'app/subapp.html', {'title': 'subapp'})

当我将我的 URL 输入为“localhost:8000/app/subapp/”时,它会将我带到正确的页面。

但是,当我将我的 URL 输入为“localhost:8000/app/subapp”时,我得到一个 404 并带有以下调试错误消息:Directory indexes are not allowed here.

我做错了什么?

【问题讨论】:

  • 您的路径 subapp/ 末尾有一个斜线。
  • @KlausD。是的,但我有 CommonMiddleware,所以它应该附加斜线,不是吗?我希望有一个斜杠,因为问题是,如果我去“localhost:8000/app”没有斜杠,它也不会加载......在我的其他 Django 项目中,斜杠被附加。跨度>

标签: python django


【解决方案1】:

请检查 settings.py 文件中的 APPEND_SLASH 设置。

还请检查该链接:

django urls without a trailing slash do not redirect

【讨论】:

  • 我已经检查过了,但是对于我的具体用例,这是因为我缺少MEDIA_ROOT = os.path.join(BASE_DIR, 'media')MEDIA_URL = '/media/'
【解决方案2】:

对于我的特定用例,这是因为我需要在我的 settings.py 中添加以下内容:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-11
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2011-08-28
    • 2014-12-06
    相关资源
    最近更新 更多