Переотобразить таблицу после отправки формы - PullRequest
0 голосов
/ 26 октября 2019

Добрый день,

У меня есть простое приложение Django 2.2 для пользователей, чтобы проверить оборудование, которое они проверили. Таблица пользователей и предметов, которые они извлекли, доминирует в верхней части страницы. В самом нижнем ряду один текст / форма отправки. Я хотел бы, чтобы это произошло:

  1. пользователь вводит идентификатор оборудования и отправляет
  2. страницу, отображаемую повторно: имя удалено из таблицы (если успешно), форма очищена, сообщение об успехе / неудачерядом с очищенной формой.

Я рядом. Вся моя логика и запросы работают, мой элемент возвращается обратно. Однако страница перерисовывается без таблицы пользователей, только форма со старыми данными в ней.

views.py

class EquipmentReturn(View):

    def get(self, request, *args, **kwargs):

        # get checked out items for display table -this works

        form = ExpressCheckInForm(request.POST)
        return render(request, 'eq_return.html', 
                      context={'master_table': master_table,
                               'form': form}

   def post(self, request):

        if request.method == 'POST'
            form = ExpressCheckInForm(request.POST)
        if form.is_valid():

        # this checks the item back in (or not) and creates messages-works

        else:
            form - ExpressCheckInForm()
    return render(request, 'eq_return.html', context={'form': form}

Я знаю, что есть лучший способ сделать это. Например, моя форма не появится, пока я не объявлю ее в функции get. Как я могу сделать все это на одной странице? Спасибо!

1 Ответ

1 голос
/ 26 октября 2019

Я думаю, что-то подобное может сработать. Я предполагаю, что здесь отсутствует код, например, где вы получаете master_table.

class EquipmentReturn(View):

    def get(self, request, *args, **kwargs):

        # get checked out items for display table -this works

        form = ExpressCheckInForm()
        return render(
            request, 'eq_return.html', 
            context={'master_table': master_table, 'form': form},
        )

   def post(self, request):
        form = ExpressCheckInForm(request.POST)
        if form.is_valid():
            # this checks the item back in (or not) and creates messages-works
            # after saving the form or whatever you want, you just need to redirect back
            # to your url. It will call get again and start over
            return HttpResonseRedirect(reverse('your-url-name'))

    return render(request, 'eq_return.html', context={'form': form})

Похоже, вы все еще находитесь в мышлении, основанном на представлении функций. Поиск различий и понимание и использование представлений на основе классов.

...