python - 获取返回无的表单 - Django 2
问题描述
我正在尝试根据输入表单过滤视图。这意味着我想存储输入变量并用它过滤视图的模型。
有两种方法可以做到这一点:通过 POST 或通过 GET。我都试过了,但我相信 GET 方法更有用。
我不知道问题是否在于我没有在 forms.py 上使用表单或在 urls.py、views.py 和 html 模板上使用某些东西。
反正。这是我的代码:
视图.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)
...
网址.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())
});
当我提交表单时,我的网址中只添加了一个问号。它来自http://127.0.0.1:8000/asset/dash到http://127.0.0.1:8000/asset/dash?.
另一件事是变量 data_initial(在 get_context_data 内部)不返回任何值。
任何人都知道如何解决它?
我被困在这个问题上三天了。
谢谢你。
编辑: 在输入中插入名称属性,并将名称和 ID 从 data_incial 更正为 data_inicial。
仍然返回无
解决方案
你没有给你的输入一个name
属性;否则,浏览器将不会发送任何数据。
<input id="data_inicial" name="data_inicial" width="150" />
(另外,请注意拼写错误;data_incial
vs data_inicial
.)
推荐阅读
- sql-server - 使用参数化查询更新链接服务器上的 varchar 列会导致远程扫描和游标获取
- assembly - fs:0x30 在 Linux 中提供了什么?
- python - 有没有办法堆叠小部件并忽略重叠?
- sql - 根据输入参数使用内连接或外连接 - 不使用动态 sql
- selector - 动态 JS 选择器
- python - Python - 从特定位置的列表中减去一个数字
- sql-server - 如何创建调用存储过程的本机查询
- reactjs - 如何测试事件的函数调用?
- php - 如何使用 PHP 从 Google 开发工具访问“表单数据”
- flutter - Flutter https异常CERTIFICATE_VERIFY_FAILED:证书扩展无效或不一致(handshake.cc:359))