我试图在get_object_or_404
中测试view
方法。所以我设置DEBUG=False
并设置ALLOWED_HOSTS=['*']
。
现在,当我转到http://127.0.0.1:8000/profile/correctusername/
时,它会返回正确的个人资料。问题是如果我尝试编写不正确的username
,它会返回500
而不是404
- 根据函数的名称,我认为它应该返回404
。< / p>
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)
为什么会如此以及如何解决?
答案 0 :(得分:0)
我遇到了同样的问题,Milano Slesarik的评论帮助我找到了解决方案。事实证明,我最近分配了一个自定义404处理程序,但没有正确执行。
这是我做得对的: 将以下行添加到urls.py.无需从django.conf.urls import handler404&#34;添加&#34; handler404 = views.error404
这是我做错了什么。在我的views.py中我添加了这个函数: def error404(请求): 返回HttpResponseNotFound(&#39;未找到自定义404&#39;)
但是我忘了在views.py中导入HttpResponseNotFound: 来自django.http import HttpResponse,HttpResponseNotFound
所以它提出了一个例外。但由于我只是设置了DEBUG = False,我无法看到错误。我刚刚看到500响应代码。
希望能帮助别人!
在urls.py中包含以下行: handler404 =&#39; views.error404&#39;
答案 1 :(得分:0)
如果项目有多个带有自己的urls.py
的应用程序,则应将handler404 = 'app_name.views.my_handle404'
添加到根URL conf(默认情况下位于项目目录中)