Django 检查是否提供了 url 参数

Django check if url parameter was provided

我有一个 url :

path('admin-panel/users/update/<id>/',user_update_for_admin, name="user_update_for_admin"),

以及 url 的视图:

def user_update_for_admin(request,id):

    user = get_object_or_404(UsersForAdmin, id=id)

一切正常,但如果 url 中未提供 ID,例如,如果我输入:

admin-panel/users/update/

我收到这个错误: 字段 'id' 需要一个数字但得到了 'update'。 我该如何解决?

使用 path converter [Django-doc] 这样 URL 只有 "fire" 如果它是一个数字(数字序列):

path(
    'admin-panel/users/update/<b><int:id></b>/',
    user_update_for_admin,
    name='user_update_for_admin'
),

如果您传递一个非整数值,它不会"fire"并寻找其他路径。如果没有路径捕获 url 模式,它将 return 404,这可能是最明智的 HTTP 响应。

您还需要将上面的路径改写为:

path(
    'admin-panel/users/<b><int:id></b>/',
    user_detail_for_admin,
    name='user_detail_for_admin'
)