在 Django 中,如何单击按钮来调用视图然后重新加载页面

Posted

技术标签:

【中文标题】在 Django 中,如何单击按钮来调用视图然后重新加载页面【英文标题】:In Django, how to click button to call a view and then reload page 【发布时间】:2017-02-27 04:37:31 【问题描述】:

在 Django 中,如何在不向 view.py 传递任何值的情况下单击页面上的按钮,然后重新加载当前页面?我在 html 中有一个按钮:

<button type="button" class="btn btn-primary" id="refresh">refresh page</button>

我想在 view.py 中调用一个视图,其中会返回新的 HTML:

@csrf_exempt
def topology_show_refresh(request):
    '''topology refresh'''
    plan = ...
    ...
    return render(request, 'topology_show.html', 'plan': plan)

plan 字典将用于新页面。

    % if plan.try == 'first' %
        <script type="text/javascript">
            var max_lane_num = plan.max_lane_num;
            var flag = 0;
        </script>
    % else %
        <script type="text/javascript">
            var max_lane_num = plan.lane_second;
            var flag = 1;
        </script>
    % endif %

以我的方式,我使用 ajax 跳转到该视图,但我不知道如何处理返回,例如,将 plan 传递给 HTML。

$(function()
    $("#refresh").click(function(event)
        url = 'refresh/';
        $.post(url, , function(ret)
            //do something
            //how to pass "plan" dictionary to HTML
        );
    );
);

【问题讨论】:

【参考方案1】:

您非常接近重新加载页面的任务, 使用 'location.reload(true)' 而不是 'window.location.reload();'

并通过success()函数处理响应数据。 试试这个:

    $(function()
        $("#refresh").click(function(event)
            $.ajax(
             type: "POST",
             url: 'refresh/',
              success:function(response) 
              location.reload(true);

              //do something with 'response'
             
            );
    );

【讨论】:

嗨,Prakhar,我已经编辑了如何将 plan 字典从 ajax 传递到 HTML 的问题 @vinllen 如果你需要重新加载页面并去查看,你为什么要使用 javascript。只需在按钮上添加 标签即可。 @vinllen Like this 不再需要强制重新加载 location.reload() 在这种情况下应该足够了 ***.com/questions/55127650/…

以上是关于在 Django 中,如何单击按钮来调用视图然后重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

如何使按钮单击更新数据库并重定向到 Django 中的视图?

Django视图绕过渲染请求

Django admin:如何在单击自定义按钮时调用操作?

在按钮单击时运行 django 视图/功能

django重定向导致重定向到下一页,但然后返回原始?

Django:在视图中使用选定的单选按钮的值来更新数据库中的值