如何在模板中把Django queryset渲染成javascript?

问题描述 投票:1回答:1

我正在用Django做一个类似调度的应用。我有 fullcalendar-django 库,并使用JavaScript做了一些修改。但后来我遇到了一个问题。这是我的views.py

from .models import NewEvent

def ScheduleMain(request):
    allDays = NewEvent.objects.all()

    return render(request, 'main.html', {'allDays':allDays}

假设在我的模型中有两个字段。NewEvent - date(DateField)和event(CharField)。 这是我模板中的标签。

{% block extrahead %}
<script>
$(document).ready(function() {
    for (each in allDays) {
    $(function() {
        if ($('.fc-day').attr('data-date') == "{{each.date}}") {
        $('.fc-day .fc-day-content').html("{{each.event}}")
        }
    });
    }
});
</script>
{% endblock %}

{% block content %}
...
{% calendar %}
...
{% endblock %}

所以在 {% calendar %},每个日期都是这样写的。

...
<td class="fc-day" data-date="2020-05-17">
    <div class="fc-day-content">today schedule comes here</div>
</td>
<td class="fc-day" data-date="2020-05-18">
    <div class="fc-day-content">today schedule comes here</div>
</td>
...

如你所见,我是想在 "今天的日程表来了 "中填入用户输入的任何事件。当然,由于模板是预先设计好的,我不能直接对它进行修改。所以我试图用JavaScript来解决。而我们现在就说每天只能有一个事件。 我做错了什么?先谢谢你:)

javascript django fullcalendar
1个回答
0
投票

用django模板语言写for循环,而不是javascript。

{% block extrahead %}
<script>
$(document).ready(function() {
    {% for day in allDays %}

      $(function() {
        if ($('.fc-day').attr('data-date') == "{{day.date}}") {
          $('.fc-day .fc-day-content').html("{{day.event}}")
        }
      });

    {% endfor %}

});
</script>
{% endblock %}
© www.soinside.com 2019 - 2024. All rights reserved.