Если вы отметите Документы MDN :
метод HTTP-метод, который браузер использует для отправки формы. Возможные значения:
post : Соответствует методу HTTP POST; Данные формы включаются в тело формы и отправляются на сервер.
get : соответствует методу HTTP GET; данные формы добавляются к URI атрибута действия с символом «?» в качестве разделителя, и в результате.
blockquote>Если вы хотите отправить удаление, прослушайте событие
submit
в форме, позвонитеevent.preventDefault()
, чтобы остановить действие по умолчанию, и сделайте свой собственный запрос к бэкэнду, что более типично. «современный» способ сделать это в любом случае, так как это не приводит к обновлению страницы.Также ваш маршрут не будет поврежден без чего-либо в части
:id
.Один из способов сделать это заключается в следующем:
Дайте вашей форме класс или найдите способ ссылаться на него
В вашем JavaScript, найти способ ссылки на форму и запретить ее отправку:
const form = document.getElementById('test-form'); form.addEventListener('submit', async event => { event.preventDefault(); // This prevents the form from submitting using POST const idInput = form.querySelector('input[name="id"]'); const id = idInput.value; const res = await fetch(`https://apiurl.com/api/${id}`, { method: 'DELETE', }); const json = await res.json(); console.log(json); });
Я знаю, что я могу просто проверить наличие корневого доступа перед импортом, но я хотел бы знать, как отловить этот особый вид ошибки с помощью оператора try / исключением для будущего ссылка. Есть ли какой-либо способ провести различие между этой RuntimeError и другими, которые могут быть вызваны?
Если ошибка вызвана определенным условием, то я думаю, что самый простой способ отловить ошибку - это проверить условие, и вы можете поднять более конкретная ошибка самостоятельно. Ведь «ошибка» существует до того, как ошибка была выдана, так как в этом случае это проблема со средой.
Я согласен с вышеизложенным - сопоставление текста по ошибке является ужасающей перспективой.
Есть ли какой-либо способ провести различие между этой RuntimeError и другими, которые могут быть вызваны?Если ошибка вызвана определенным условием, то я думаю, что самый простой способ отловить ошибку - это проверить условие, и вы можете поднять более конкретная ошибка самостоятельно. Ведь «ошибка» существует до того, как ошибка была выдана, так как в этом случае это проблема со средой.
Я согласен с вышеизложенным - сопоставление текста по ошибке является ужасающей перспективой.
Есть ли какой-либо способ провести различие между этой RuntimeError и другими, которые могут быть вызваны?Если ошибка вызвана определенным условием, то я думаю, что самый простой способ отловить ошибку - это проверить условие, и вы можете поднять более конкретная ошибка самостоятельно. Ведь «ошибка» существует до того, как ошибка была выдана, так как в этом случае это проблема со средой.
Я согласен с вышеизложенным - сопоставление текста по ошибке является ужасающей перспективой.
Вы можете проверить атрибуты исключения, чтобы отличать их от других возможных RuntimeError
исключений. Например, повторно вызовите ошибку, если она не соответствует предопределенному тексту сообщения.
try:
import pypatred
except RuntimeError,e:
if e.message == 'RuntimeError: pyparted requires root access':
return 'pyparted - no root access'
raise
Конечно, прямое сравнение текста - это только пример, вы можете искать включенные подстроки или регулярные выражения.
Стоит отметить, что атрибут исключений .message
является устаревшим, начиная с Python 2.6 . Вы можете найти текст в .args
, обычно args [0]
.
... Для версии 2.6 атрибут
message
устарел в пользу атрибутаargs
.
try:
import pyparted
except RuntimeError:
print('RuntimeError is raised')
raise
подробнее о обработке исключений в учебнике .
Эта ситуация должна привести к ImportError
, по моему мнению. И вы можете сделать это сами:
try:
import pyparted
except RuntimeError as e:
raise ImportError(e)
Да.
try:
import module
except RuntimeError:
pass
Импорт интерпретируется как любое другое утверждение, оно не является специальным. Вы можете сделать
if condition:
import module