【问题标题】:I am getting the date instead of date and time data in a POST request我在 POST 请求中获取日期而不是日期和时间数据
【发布时间】:2021-11-29 06:29:08
【问题描述】:

我的网站上有一个date range picker

当用户输入日期和时间范围时,我想以startDateendDate 的形式分别发送

日期范围选择器代码:

    $('input[name="datetimes"]').daterangepicker({
        timePicker: true,
        timePickerIncrement: 5,
        startDate: moment().startOf('hour'),
        endDate: moment().startOf('hour').add(32, 'hour'),
        locale: {
          format: 'YYYY-MM-DD hh:mm'
        },
        opens: 'center',
        drops: 'auto'
    });

这是我尝试过的:

$('#formid').submit(function(e) {
    e.preventDefault();
    let startDate = ($('#datetimes').data('daterangepicker').startDate).format('YYYY-MM-DD hh:mm');
    let endDate = ($('#datetimes').data('daterangepicker').endDate).format('YYYY-MM-DD hh:mm');
    $(this).append('<input type="hidden" name="start_date" value='+startDate+' /> ');
    $(this).append('<input type="hidden" name="end_date" value='+endDate+' /> ');
    this.submit();
});

this.submit(); 之前,我做了console.log(startDate),这就是我得到的:

我正在获取日期和时间(如预期的那样),但是如果我尝试在视图(django 后端)中执行print(request.POST),这就是我得到的:

不知何故,在POST 期间,HH:mm 消失了。

如何在 POST 期间保留 hh:mm 的值?

更新:

views.py

def add_new_task(request):
    context = {}
    context['nbar'] = 'index'
    if request.method == 'POST':
        print(request.POST)
    return render(request, 'index.html', context)

models.py

class ToDoList(models.Model):
    title = models.CharField(max_length=60)
    description = models.TextField()
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    user = models.ForeignKey(
        User,
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
    )

【问题讨论】:

  • start_date 是 DateTimeField() 对吗?也分享您的观点和模型。
  • 没错。添加了视图和模型。谢谢!
  • 通过在浏览器的开发者工具中检查“网络”选项卡中的 POST 请求数据,确保 js 部分发送完整日期
  • 我看不出有什么奇怪的。如果我硬编码日期,例如2021-11-30 11:00,我可以在后端接收它,但如果我使用 startDate 和 endDate 数据,小时和分钟就会丢失。
  • 似乎是一时的问题?

标签: javascript django daterangepicker


【解决方案1】:

这是一个长镜头,但是否有可能是您在隐藏输入中缺少 value 属性周围的双引号,这是导致问题的原因吗?

尝试将其更改为:

$(this).append('<input type="hidden" name="start_date" value="'+startDate+'" /> ');
$(this).append('<input type="hidden" name="end_date" value="'+endDate+'" /> ');

【讨论】:

  • 天才,就是这样
猜你喜欢
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 2015-11-14
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 2019-12-14
相关资源
最近更新 更多