Получать данные из формы интерфейса Django - PullRequest
0 голосов
/ 14 мая 2018

что я пытаюсь сделать:

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

Мой код:

в views.py:

def panelThree(request):

    startDate = ''
    endDate = ''
    byOtherField = ''

    if request.method == 'POST':
        form = QueryForm(request.POST)
        if form.is_valid():
            startDate = request.POST.get('date')
            endDate = request.POST.get('date1')
            byOtherField = request.POST.get('date2')

    else:
        form = QueryForm()

    # if not byOtherField:
    dataTable = Production.objects.order_by('-id')
    return render(request, 'frontend/panelThree.html', {
        'form': form, 'dataTable': dataTable,  'startDate':startDate
    })

frontend_form:

<form method="post">
      {% csrf_token %}
      <div class="row">
          <div class="col-md-8">
            <div class="row">
                    <div class="col-md-4">
                      <label >
                       TextField1
                      </label>
                      <input class="form-control" id="date" name="date" placeholder="MM/DD/YYYY" type="text"/>
                      <p> >> Start Date </p>
                    </div>
                   <div class="col-md-4">
                        <label class="control-label " for="date1">
                         TextField2
                        </label>
                        <input class="form-control" id="date1" name="date1" placeholder="MM/DD/YYYY" type="text"/>
                        <p> >> End Date </p>
                   </div>
                <div class="col-md-4">
                   <label class="control-label " >
                    Or
                   </label>
                  <label class="control-label " for="date2">
                   TextField3
                  </label>
                  <input class="form-control" id="date2" name="date2" placeholder="MM/DD/YYYY" type="text"/>
                  <p> >> By Other Field </p>
                 </div>
           </div>
         </div>
        <div class="col-md-4">
                 <div class="button-box">
                     <button class="btn btn-primary " name="submit" type="submit"> Search </button>
                </div>
         </div>
       </div>
    </form>

Моя ошибка:

ошибки нет, но я просто не могу получить значение из поста формы в startDate. Это всегда показывает пустое значение.

Я ценю помощь в решении этой проблемы или любые способы обойти это. Заранее спасибо.

Ответы [ 2 ]

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

Удалив оператор "if form.is_valid ()" и вернувшись обратно к методу request.POST.get, он работает

def panelThree(request):

        startDate = ''
        endDate = ''
        byOtherField = ''

        if request.method == 'POST':
            form = QueryForm(request.POST)

            startDate = request.POST.get('startDate')
            endDate = request.POST.get('endDate')
            byOtherField = request.POST.get('byOtherField')

        else:
            form = QueryForm()

        # if not byOtherField:
        dataTable = Production.objects.order_by('-id')
        return render(request, 'frontend/panelThree.html', {
            'form': form, 'dataTable': dataTable,  'startDate':startDate
        })
0 голосов
/ 14 мая 2018

2 проблемы здесь.

1) Поля в html названы неправильно.

<input class="form-control" id="date" name="date" placeholder="MM/DD/YYYY" type="text"/>

Поле name здесь должно быть установлено на startDate, как и поле id.

2) Вы получаете данные непосредственно из POST.

После проверки формы is_valid, вы должны получить данные из нее следующим образом:

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