Как проверить, существуют ли запрашиваемые данные - PullRequest
0 голосов
/ 25 июня 2019

У меня проблема с поддержкой данных.Я передаю в шаблоне разные имена переменных.Когда я отправляю одну переменную, у меня появляется ошибка: Тип исключения: MultiValueDictKeyError.

Я отправляю для просмотра переменных с именами btn, delete и undo.

Я сделалэто так

try:
       task = List.objects.get(id=data['undo'])
   except:
       try:
           task = List.objects.get(id=data['delete'])
       except.....

И это работает правильно, но у меня есть проблема, чтобы сделать это лучше.

Мой взгляд

def index(request):
    if request.method == 'POST':
        data = request.POST
        type_of = request.POST.get('type')
        if data['description']:
            new_task = List()
            new_task.create_task(data['title'], data['description'], type_of)
        else:
            return render(request, './index.html', {'context': "error: field cannot be empty"})
    if request.method == 'GET':
        data = request.GET
        try:
            task = List.objects.get(id=data['btn'])
            for x in task_status:
                if task.type_of == task_status[x]:
                    task.type_of = task_status[x + 1]
                    break
            task.save()
        except:
            try:
                task = List.objects.get(id=data['delete'])
                task.delete()
            except:
                try:
                    task = List.objects.get(id=data['undo'])
                    for x in task_status:
                        if task.type_of == task_status[x]:
                            task.type_of = task_status[x - 1]
                            break
                    task.save()
                except:
                    task_list_back_log, task_list_to_do, task_list_in_progress, task_list_done = return_filter_lists()
                    return render(request, './index.html',
                                  {'back_log': task_list_back_log, 'to_do': task_list_to_do,
                                   'in_progress': task_list_in_progress,
                                   'done': task_list_done})

Но когда я удалил свой блок try-exc и перешел к просмотру только для примера data['undo'] У меня ошибка

Значение исключения: 'btn'

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

Ответы [ 2 ]

0 голосов
/ 25 июня 2019
 task = List.objects.filter(id=data['undo']).first()

возврат первой записи

0 голосов
/ 25 июня 2019
List.objects.filter(id=data['undo']).exists()

вернет True или False в зависимости от того, найдет ли запрос что-либо или нет.

Если вопрос касается проверки существования данных ['undo'], то:

if 'undo' in data:
  do_some_magic()

будет делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...