Django проверить, был ли указан параметр url - PullRequest
1 голос
/ 18 июня 2020

у меня есть 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-адресе, например, если я введите:

admin-panel / users / update /

Я получил эту ошибку: Поле 'id' ожидало число, но получило 'update'. как исправить что?

1 Ответ

3 голосов
/ 18 июня 2020

Используйте преобразователь пути [Django -doc] , чтобы URL-адрес «активировался» только в том случае, если это число (последовательность цифр):

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

Если вы передадите значение, отличное от int, оно не будет "срабатывать" и искать другие пути. Если ни один из путей не захватывает шаблон URL-адреса, он вернет 404, что, вероятно, является наиболее разумным ответом HTTP.

Кроме того, вам нужно переписать указанный выше путь на:

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