姜戈 |无法访问没有尾随“/”的 URL
Posted
技术标签:
【中文标题】姜戈 |无法访问没有尾随“/”的 URL【英文标题】:Django | Cannot access URLs without a trailing "/" 【发布时间】: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 项目中,斜杠被附加。跨度>
【参考方案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/'
这解决了我的问题。
【讨论】:
以上是关于姜戈 |无法访问没有尾随“/”的 URL的主要内容,如果未能解决你的问题,请参考以下文章