Обработка необязательных параметров в Python - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь решить проблему, связанную с моим API, и хочу реорганизовать мой код, чтобы он работал в обратном направлении. Я имею в виду, что если интерфейс не отправляет мне данные, которые я хочу, запрос должен пройти, и если интерфейс отправляет, он все равно будет работать как обычно.

Итак, примерно моя функция создания работает нормально, однако, когда команда переднего плана отправила данные без ожидаемого сервером сбоя с 500 Internal Server Error, но я хочу сделать это необязательным, даже если ожидаемые данные не отправляются Я хочу получить ответ 200 Http, вот где код ломается из-за ключевой ошибки на job_invoice. Я пытался использовать в цикле for, чтобы обойти его ... но все же.

job_invoice_data = inv_data['job_invoice']
    job_invoice = JobInvoice.objects.create(job=job_instance,   **job_invoice_data)
    obj.job_invoice = job_invoice

    # Create an InvoiceLineItem for each element in invoice_line_item

    for invoice_line_item in inv_data['invoice_line_item']:
        invoice_line_item['job_invoice'] = job_invoice.id
        if invoice_line_item['job_invoice'] is None:
            break
        invoice_line_item_serializer = InvoiceLineItemSerializer(data=invoice_line_item)
        if invoice_line_item_serializer.is_valid():
            invoice_line_item_obj = invoice_line_item_serializer.save()
        else:
            logger.debug("Couldn't create invoice line item: {}".format(invoice_line_item))

1 Ответ

0 голосов
/ 07 мая 2018

Простое решение: Использование блоков Try и Catch

try:
    #Parse all parameters here
except:
    pass

Более сложный:

Проверьте доступность параметров и действуйте только тогда, когда они доступны, но используйте значение по умолчанию none.

Например, во Flask вы можете сделать что-то вроде этого:

@app.route("/func/<required_param>", defaults={"opt1": None, "opt2": None,"opt3": None}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...