Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Django:处理用户输入错误URL模式导致404的情况_Django - Fatal编程技术网

Django:处理用户输入错误URL模式导致404的情况

Django:处理用户输入错误URL模式导致404的情况,django,Django,如何防止用户输入数据库中不存在的url值。例如,汽车有一个id,因此导航到汽车将是 http://127.0.0.1:8000/car/1,如果用户输入的id不存在,则返回404,我如何处理 urlpatterns=[ 路径(“”,include('index.url')), 路径('cars/',包括('car.url'), 路径('users/',include('user.url')), 路径('admin/',admin.site.url), ] 这是我汽车视图的一部分,因为我也有搜索

如何防止用户输入数据库中不存在的url值。例如,汽车有一个id,因此导航到汽车将是
http://127.0.0.1:8000/car/1
,如果用户输入的id不存在,则返回404,我如何处理

urlpatterns=[
路径(“”,include('index.url')),
路径('cars/',包括('car.url'),
路径('users/',include('user.url')),
路径('admin/',admin.site.url),
]
这是我汽车视图的一部分,因为我也有搜索车,这有点长:

def获取车辆id(请求,id):
cars=Car.objects.all()
car_types=CarCategory.objects.all()
context={'plants':公寓,'car\u type':car\u type,
“car”:获取对象或404(car,pk=id)}
返回渲染(
请求“car/single_car.html”,上下文
)
您正在使用
get\u object\u或\u 404
快捷方式。这是一种常见的方法,意味着当对象不存在时,Django将显示404页面,而不是崩溃。只有当设置中的
DEBUG=False
时,您才会看到真正的404页面。当您有
DEBUG=True
时,您将看到黄色的404页面来帮助调试问题

如果确实不想显示404页面,则不应使用
get\u object\u或\u 404
。您可以捕获
DoesNotExist
异常

def get_car_by_id(request, id):
    cars = Car.objects.all()
    car_types = CarCategory.objects.all()
    try:
        car = Car.objects.get(pk=id)
    except Car.DoesNotExist:
        car = None
    context = {'apartments': apartments, 'car_types': car_types,
               'car': car }
    return render(
        request, 'car/single_car.html', context
    )

现在,您可以在模板中检查
{%if car%}
,并显示适当的错误消息。

您应该在视图中检查该错误消息。提供你的汽车
视图。py
。不应该因为你发布的内容而撞车。也许你把404错误误认为崩溃了?@Gasanov没错,防止输入不存在的东西,它将返回404。
def get_car_by_id(request, id):
    cars = Car.objects.all()
    car_types = CarCategory.objects.all()
    try:
        car = Car.objects.get(pk=id)
    except Car.DoesNotExist:
        car = None
    context = {'apartments': apartments, 'car_types': car_types,
               'car': car }
    return render(
        request, 'car/single_car.html', context
    )