我正在使用日期范围选择器(http://www.daterangepicker.com/),我想将选定的开始和结束日期传递给django view.py,以便我可以在这两个日期之间生成报告。
这是我的HTML:
{% extends "Base.html" %}
{% load crispy_forms_tags %}
{% block head_title %} WEB RT | Poročila {% endblock head_title %}
{% block content %}
<form method="POST" action="report/">
{% csrf_token %}
{{form.as_p}}
<button type="submit" id="send">Izpis poročila</button>
<div class="col-md-4">
<div>
<div id="reportrange" name = "date" class="pull-right" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%"/>
<i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
<span></span> <b class="caret"></b>
</div>
<script type="text/javascript">
$(function() {
var start = moment().subtract(29, 'days');
var end = moment();
function cb(start, end) {
$('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
}
$('#reportrange').daterangepicker({
startDate: start,
endDate: end,
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
}
}, cb);
cb(start, end);
});
</script>
</div>
</form>
{% endblock content %}
这是我的view.py
def report (request):
if request.method == 'POST':
date_start = request.POST['start']
date_end = request.POST['end']
form = Porocila(request.POST)
if form.is_valid():
picked = form.cleaned_data.get('Linacs')
else:
messages.error(request, "Izberi vsaj en Linac!")
return redirect('/porocila/')
答案 0 :(得分:1)
在您的示例中,您正在使用POST METHOD。
因此,您需要将表单链接到daterangepicker。你不能在你的代码中做到这一点。
您拥有自己的表单,并在使用日期选择器创建div之后。 您可以创建一个包含两个日期字段的表单。
ggplot(df1, aes(x=Nets, y = Cumulative.spp)) + geom_point() + geom_line(y = predict(as.lm.nls(Model1), interval = "confidence")[,1]) + geom_ribbon(ymax = predict(as.lm.nls(Model1), interval = "confidence")[,3], ymin = predict(as.lm.nls(Model1), interval = "confidence")[,2], fill = "blue", alpha = 0.5)
在您的javascript代码中,您可以将一个日期选择器链接到每个字段。
更好的解决方案,使用日期范围选择器(http://www.daterangepicker.com/),此组件可以在一个字段中管理两个日期。添加到您的表单一个字段。
date_start = forms.DateField(...)
date_end = forms.DateField(...)
这里是CharField,因为该字段在字符串中有两个日期。 并删除链接日期选择器的div。在您的字段上链接您的日期选择器。您的字段的ID将为:id_date_range_picker。
date_range_picker = forms.CharField(...)
然后在您的视图中,您可以检索POST数据。并将date_range_picker字段视为将两个日期分开,这两个日期肯定会在一个字符串中。