Django:使用 Javascript 发送 POST 请求,但随后显示更新的页面而不是旧页面

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

我在主模板中有一个触发 onclick 调用 javascript 函数的输入:

 <div class="removeTagElementChildDiv">
                {% csrf_token %}
                <input type="image" name="deleteTagImage" class="deleteTagImage" src="{% static 'images/deleteTag.png' %}" width = "10" height = "10" onclick="return removeTag(this.parentElement)">
            </div>

这调用了这个方法:

 function removeTag(removeSymbolDivForTagToRemove)
    {
        tagElement = removeSymbolDivForTagToRemove.parentElement
        tagValue = tagElement.querySelector('button[name="tagInTagsMenu"]').value
        console.log(tagValue)
        if (window.confirm(`Are you sure you want to delete the, ${tagValue}, tag`))
        {
            return test(tagValue)      
        }
    }

测试方法向我在 urls.py 中指定的 url 之一发出 POST 请求的地方:

function test(tagValue)
{
    var csrftoken = getCookie('csrftoken')
    fetch('deleteTag', {
    method: 'POST',
    action: 'deleteTag',
    headers: {
        "X-Requested-With": "XMLHttpRequest",
        "X-CSRFToken": csrftoken,
    },
    body: tagValue
})
}

此方法从post请求中删除特定标签,并重定向到主页:

def deleteTag(request):
    tagName = request.body.decode('utf-8')
    Tag.objects.filter(name=tagName).delete()
    tagsFromModel = Tag.objects.all()
    for tag in tags: 
        if util.findTagByTagName(tag.name,tagsFromModel) == None: #if the tag from the original list is not in the model, it has been deleted
            tags.remove(tag)
    
    loadTagsFromModel()
    print("end of delete tag method")
    return(redirect("/"))

def main(request):
    now = datetime.now()

    time = now.strftime("%H:%M:%S")
    loadTagsFromModel()
    context = {'myTags':tags,'time':time}
    print("tags in main",len(tags)) 
    #problemet er, at den stadig displayer den gamle index.html når man sletter et tag
    return render(request, 'index.html',context)

一切正常,数据在标签列表中正确更新。 然而,通过调试(随着时间的推移)我发现即使我打电话:

return render(request, 'index.html',context)

显示的新页面还是旧的index.html,这里的tag没有被删除。 只有当我刷新页面或在页面上执行一些其他操作(直接通过 Django 的 url.py 重定向的操作)时,才会显示新的 index.html。

我想这是关于 javascript 函数的问题,它没有正确返回,因此仍然呈现旧的 index.html,但我不知道我应该如何用新模板replace旧模板。

javascript python django post
© www.soinside.com 2019 - 2024. All rights reserved.