Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果未找到页面,则转到默认页面,而不是显示404_Python_Django - Fatal编程技术网

Python 如果未找到页面,则转到默认页面,而不是显示404

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

我有一个包含用户名和用户ID的模型。 我创建了一个视图,如果我尝试访问该类型的链接,该视图将向我显示该信息

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})