【问题标题】:In Django, how to click button to call a view and then reload page在 Django 中,如何单击按钮来调用视图然后重新加载页面
【发布时间】: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
        });
    });
});

【问题讨论】:

    标签: ajax django


    【解决方案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() 在这种情况下应该足够了 stackoverflow.com/questions/55127650/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2012-12-09
    • 2018-12-18
    相关资源
    最近更新 更多