Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从django中的视图更新模板标记的值_Javascript_Python_Django_Django Models_Django Templates - Fatal编程技术网

Javascript 从django中的视图更新模板标记的值

Javascript 从django中的视图更新模板标记的值,javascript,python,django,django-models,django-templates,Javascript,Python,Django,Django Models,Django Templates,我在Django中有一个表单来提供关于某一天各种任务的信息,这些任务保存为模型对象。我在HTML页面上呈现任务,如网格视图中所示。 但是现在我想只在那一天显示任务。使用右上角的箭头,我希望能够过滤任务并显示它们 我已经从日历的javascript中提取了当前日期,并通过myviews.py中的ajax调用发送它。从那里,我根据日期过滤任务,但是一旦我更改了视图(即,左、右角箭头的日期),我就能够捕获更新的日期,但无法更新JS端的模板标记 views.py #第一次加载页面时的默认视图 #由于默认

我在Django中有一个表单来提供关于某一天各种任务的信息,这些任务保存为模型对象。我在HTML页面上呈现任务,如网格视图中所示。 但是现在我想只在那一天显示任务。使用右上角的箭头,我希望能够过滤任务并显示它们

我已经从日历的javascript中提取了当前日期,并通过myviews.py中的ajax调用发送它。从那里,我根据日期过滤任务,但是一旦我更改了视图(即,左、右角箭头的日期),我就能够捕获更新的日期,但无法更新JS端的模板标记

views.py

#第一次加载页面时的默认视图
#由于默认情况下会加载到当前日期,因此会筛选当前日期的任务。
def时间表(请求):
今天=datetime.datetime.today()
tasks=tasks.objects.filter(schedule\u date=today.strftime(“%Y-%m-%d”))
上下文={
“任务”:过程,
}
返回呈现(请求,r'dhtmlx_grid_view.html',上下文)
.
.
.
.
#当视图发生更改时(即导航到新日期时)调用此函数
@豁免
def加载_任务(请求):
如果request.method==“POST”:
view\u date=request.POST.get('new\u date')
date=datetime.datetime.StrTime(查看日期,“%b%d%Y”)
tasks=tasks.objects.filter(schedule\u date=date.strftime(“%Y-%m-%d”))
上下文={
“任务”:任务
}
返回呈现(请求,r'dhtmlx_grid_view.html',上下文)
dhtmlx_grid_view.html(在html文件的JS部分)

{使用ajax post调用发送更改的日期}
scheduler.attachEvent(“onViewChange”,函数(新模式,新日期){
$.ajax({
url:{%url'任务:加载任务“%”,
类型:“POST”,
数据:{
“新日期”:字符串(新日期)。子字符串(4,15),
“新模式”:新模式,
},
成功:功能(结果){
警报(“成功”)
}
});
})
.
.
.
.
{#使用如下模板标记呈现变量#}
变量任务=[
{tasks%%中的i的%s}
{
键:{i.grouper}},标签:{{i.grouper}},打开:true,子项:[
{i.list%中j的%s}
{key:{j.sub_进程{u id},标签:{{j.sub_进程}}},
{%endfor%}
]
},
{%endfor%}
];
如何从
加载任务
方法更改模板侧的
任务
的值

有没有办法做到这一点,因为即使我存储了更改的日期和筛选器,我也无法更新模板端的
任务的值


如果您需要任何其他信息,请告诉我。

只有在最初生成HTML文件时,才会对模板中加载的标记进行评估。对于将来的AJAX请求,这些标记将不再起作用。您需要从
ajax
调用更改回调中的DOM

scheduler.attachEvent("onViewChange", function (new_mode, new_date) {

            $.ajax({
                url: {% url 'tasks:load-tasks' %},
                type: "POST",
                data: {
                    'new_date': String(new_date).substring(4,15),
                    'new_mode': new_mode,

                },
                success: function (result) {
                    // Set the new DOM up in here
                }
            });
        })

在success函数中,如何更新模板标记{{tasks}}的现有值?您需要使用JavaScript进行更新,因为这是在浏览器中运行的编程语言。例如,您可以编写类似于
document.getElementById('tasksElement').innerHTML=result(不完全是这样,但希望你能理解这一点)。是的,我理解,但在我的例子中,{{tasks}}是一个模型对象,使用Django模板进行循环,我在dhtmlx网格视图上呈现它们,我没有给它这样的特定Html组件。如果不是这样,我可以在javascript端进行过滤吗?通过{Tasks.filter(date==variable)}并呈现这个对象,如果我这样做,我如何在模板标记{{{}内传递一个变量?