Django访问地址不会自动加斜杠问题
标签:
日期: 2024-02-17 | 作者: admin | 浏览: 210

开发环境,Debug = True,一切都正常访问。

部署到云上后,Debug = False。

访问https://mysite.cn/admin 直接提示404错误,

访问 https://mysite.cn/admin/ 能正常显示,就差一个 / 。

本来以为是NGINX配置问题,还折腾了N久,但问题还是一样未解决。

然后Django默认的APPEND_SLASH参数设置了也同样无效。

后来找到篇文章,https://devpress.csdn.net/cloud/63050881c67703293080e9a1.html ,原来是status_code配置的问题,函数返回status成200了,而不是404和500导致。

项目urls.py

from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    ]

# 配置404和500页面
handler404 = views.error_404
handler500 = views.error_500

app里的views.py

# 404错误, 原来未添加status=404,导致status成200,不会自动加/
def error_404(request, exception):
    return render(request, 'myapp/404.html', status=404)


# 500错误,原来未添加status=500,导致status成200,不会自动加/
def error_500(request):
    return render(request, 'myapp/500.html', status=500)

增加404和500的函数返回状态码,重启服务后一切都正常了~~~