Получить форму возврата None - Django 2 - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь отфильтровать представление на основе формы ввода.Это означает, что я хочу сохранить входные переменные и отфильтровать модель представления следующим образом.

Есть два способа сделать это: POST или GET.Я пробовал оба из них, но я считаю, что метод GET более полезен.

Я не знаю, проблема ли в том, что я не использую форму в forms.py или что-то в URL.py, views.py и html-шаблон.

В любом случае.Вот мой код:

views.py

class PareceresHistAsset(LoginRequiredMixin, ListView):
    login_url = 'login/'
    redirect_field_name = 'redirect_to'
    template_name = "dash_asset.html"

    # Obtendo o ano anterior ao vigente
    ano = datetime.now().year - 1
    # Model Utilizado
    model = Pareceres
    queryset = Pareceres.objetos.filter(data_comite__year__gte=ano).filter(segmento='asset')

    # Criando os dados de context da view
    def get_context_data(self, **kwargs):
        ## Queryset do objeto
        queryset = self.queryset

        # Teste
        data_inicial = self.request.GET.get('data_inicial')
        print(data_inicial)
...

urls.py

from portal.views import *
from django.urls import path
from django.contrib.auth.views import LoginView

app_name = 'portal'

# urlpatterns contém a lista de roteamento URLs

urlpatterns = [
    # GET /
...
    path('asset/dash', PareceresHistAsset.as_view(), name='dash_asset'),
...
]

dash_asset.html

<div class="card mt-3">
    <div class="card-body">    
        <form method="get">
            <div class="row">
                <!-- Data Inicial-->
                <div class="col-2">
                    <label for="data_inicial">Data Inicial</label>
                    <input id="data_inicial" width="150" name="data_inicial"/>
                </div>
                <!-- Data Final -->
                <div class="col-2">
                    <label for="data_final">Data Final</label>
                    <input id="data_final" width="150" name="data_final"/>
                </div>
                <!-- Botão Submitt-->
                <div class="col-3 text-left">
                    <br>
                    <button class="btn btn-primary btn-sm" id="filtra_datas" type="submit">Atualizar</button>
                </div>
        </form>
        </div>
    </div>
</div>

И javascript, используемый в форме ввода

    <!-- Material Design Date Picker -->
    <script src="https://unpkg.com/gijgo@1.9.11/js/gijgo.min.js" type="text/javascript"></script>
    <link href="https://unpkg.com/gijgo@1.9.11/css/gijgo.min.css" rel="stylesheet" type="text/css" />


    function formatDate(date) {
        var d = new Date(date),
            month = '' + (d.getMonth() + 1),
            day = '' + d.getDate(),
            year = d.getFullYear();

        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;

        return [day, month, year].join('/');
    }    

    $('#data_inicial').datepicker({ 
        format:

 'dd/mm/yyyy',
    value: '01/01/2019',
});
$('#data_final').datepicker({
    format: 'dd/mm/yyyy',
    value: formatDate(Date())
});

Когда я отправляю форму, к моему URL добавляется только вопросительный знак.Оно пришло от http://127.0.0.1:8000/asset/dash до http://127.0.0.1:8000/asset/dash?.

Другое дело, что переменная data_inicial (внутри get_context_data) не возвращает ничего.

Кто-нибудь знает, как решить эту проблему?

Я застрял на этом как три дня.

Спасибо.

Редактировать: Вставил атрибут name на входы и исправил имя и идентификатор из data_incial в data_inicial.

Все еще возвращает None

1 Ответ

0 голосов
/ 20 февраля 2019

Вы не дали своим входным данным атрибут name;без этого браузер не будет отправлять данные.

<input id="data_inicial" name="data_inicial" width="150" />

(Также остерегайтесь опечаток; data_incial против data_inicial.)

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