2024-03-29 14:15:47 发布
网友
我正在尝试从URL获取ID(在django中):
url(r'^preset/(P<pk>\d+)$', views.route_preset_api.as_view()),
只要输入是一个数字,就可以很好地工作。但如果不是数字,页面将返回500错误。你知道吗
我如何做一个特殊的情况,这将照顾到所有无效的输入,并将给出一个例子
pk=0
作为输出?你知道吗
首先,您的模式缺少指定命名组的必需的?。应该是:
?
r'^preset/(?P<pk>\d+)$'
它将匹配的子字符串与组名pk相关联,即命名组。如果没有?,regex将直接匹配preset/P<pk>,后跟一个或多个数字。你知道吗
pk
preset/P<pk>
其次,如果存在任何非数字,regex将不匹配,并且将发送404notfound响应。可能500错误发生在代码的其他地方-是否有不太特定的模式匹配?你知道吗
要处理无效的请求,可以添加路由到同一视图函数的第二个模式,但是为pk参数添加一个默认参数。URL模式为:
url(r'^preset/[^\d]*$', views.route_preset_api.as_view()),
视图函数如下所示:
def route_preset_api(request, pk=0): ...
现在,每当发出包含非数字字符的请求时,pk将默认为0。你知道吗
0
首先,您的模式缺少指定命名组的必需的
?
。应该是:它将匹配的子字符串与组名
pk
相关联,即命名组。如果没有?
,regex将直接匹配preset/P<pk>
,后跟一个或多个数字。你知道吗其次,如果存在任何非数字,regex将不匹配,并且将发送404notfound响应。可能500错误发生在代码的其他地方-是否有不太特定的模式匹配?你知道吗
要处理无效的请求,可以添加路由到同一视图函数的第二个模式,但是为
pk
参数添加一个默认参数。URL模式为:视图函数如下所示:
现在,每当发出包含非数字字符的请求时,
pk
将默认为0
。你知道吗相关问题 更多 >
编程相关推荐