0

我试图get_object_or_404在我的view. 所以我设置DEBUG=False和设置ALLOWED_HOSTS=['*']

现在,当我转到 时http://127.0.0.1:8000/profile/correctusername/,它会返回正确的个人资料。问题是,如果我尝试写不正确username,它会返回500而不是404- 根据函数的名称,我认为它应该返回404

def get_user_profile(request, username):
    # user = User.objects.get(username=username)
    user = get_object_or_404(User, username=username)

    jobs = user.jobs.all()
    table = MyJobsTable(jobs)

    context = {
        'my_jobs': table,
        "user_": user
    }
    return render(request, 'auth/profiles/my-profile.html', context=context)

在此处输入图像描述

为什么会这样以及如何解决?

4

2 回答 2

1

我遇到了同样的问题,Milano Slesarik 的评论帮助我找到了解决方案。事实证明,我最近分配了一个自定义 404 处理程序,但没有正确执行。

这是我做的:将以下行添加到urls.py. 无需添加from django.conf.urls import handler404

handler404 = views.error404

这是我做错了什么。在我的views.py我添加了这个功能:

def error404(request):
    return HttpResponseNotFound('custom 404 not found')

但我忘记import HttpResponseNotFoundviews.py

from django.http import HttpResponse, HttpResponseNotFound

所以它引发了一个例外。但由于我刚刚设置DEBUG=False,我看不到错误。我刚刚看到了 500 响应代码。

希望对某人有所帮助!

在 urls.py 中使用以下行:

handler404 = 'views.error404'
于 2017-01-09T22:17:07.500 回答
0

如果项目有多个应用程序,urls.py您应该添加handler404 = 'app_name.views.my_handle404'到根 url conf(默认情况下存在于项目目录中)

于 2020-08-03T14:24:10.710 回答