Python 如果未找到页面,则转到默认页面,而不是显示404
我有一个包含用户名和用户ID的模型。 我创建了一个视图,如果我尝试访问该类型的链接,该视图将向我显示该信息Python 如果未找到页面,则转到默认页面,而不是显示404,python,django,Python,Django,我有一个包含用户名和用户ID的模型。 我创建了一个视图,如果我尝试访问该类型的链接,该视图将向我显示该信息 serverAddress/users/<user_id>/ 如果发现数据库中不存在的用户id,我不想显示404页面未找到错误,而是想显示一个表单,以便可以注册具有该不存在id的新用户 我该怎么做 遵循前面的答案:应该是 def detail(request, user_uuid): try: user = RegUser.objects.get(u
serverAddress/users/<user_id>/
如果发现数据库中不存在的用户id,我不想显示404页面未找到错误,而是想显示一个表单,以便可以注册具有该不存在id的新用户
我该怎么做 遵循前面的答案:应该是
def detail(request, user_uuid):
try:
user = RegUser.objects.get(user_uuid=user_uuid)
except:
user = None
if user:
return render(request, 'accessManager/detail.html', {'user': user})
else:
return render(request, 'accessManager/new_user.html')
为此,您不能使用
get\u object\u或\u 404
方法。但是您可以使用try…except
语句捕获RegUser.DoesNotExist
异常
编辑:固定代码
def detail(request, user_uuid):
try:
user = RegUser.objects.get(user_uuid=user_uuid)
# do something
except RegUser.DoesNotExist:
return HttpResponseRedirect('/url/of/register/page/')
return render(request, 'accessManager/detail.html', {'user': user})
使用
except
语句是不好的,除非你想抓住例外。我同意。你的答案更好。此外,在没有任何上下文的情况下呈现模板可能会导致显示不完整…“new_user.html”可能需要模板上的一些变量…更喜欢重定向而不是直接呈现。我正在尝试实现这一点,但无论输入的uuid如何,它都将使用我的detail.html模板来显示它,即使uuid不存在。可能是你在某个地方犯了一个小错误吗?看来部分Luftars的答案是正确的,因为你必须使用RegUser.objects.get
而不仅仅是RegUser.@green\u leaf哦,对不起!不知道我错过了。我感觉糟透了。现在已经更正了,所以其他对此感兴趣的人都会看到正确的解决方案。感谢您的快速编辑。
def detail(request, user_uuid):
try:
user = RegUser.objects.get(user_uuid=user_uuid)
# do something
except RegUser.DoesNotExist:
return HttpResponseRedirect('/url/of/register/page/')
return render(request, 'accessManager/detail.html', {'user': user})