jquery - 使用 AJAX 执行 Python Django 脚本

标签 jquery python ajax django

我正在为我的网站使用 Django。目前我正在使用 location.reload();这样当用户填写数据并单击按钮时,它将触发 location.reload()当整个页面重新加载时,它将执行 Django 脚本。但我不想重新加载整个页面来执行脚本,我只想重新加载特定的 <div>使用 Ajax 。我该怎么做?

{% if userFirstName %}
                <div id="topAdminCont" class="left">
                    <div id="userSection">
                <!--        <img src="{% static "assets/images/admin_icon.png" %}" width="20" alt="Admin" class="left" /> -->
                        <p id="admin" class="right">{{userFirstName}}</p>
                        <div class="clear"></div>
                    </div>
                    <ul id="dropAdmin">
                        <li><a href="#" id="chngPwdBut">Change Password</a></li>
                        <li><a href="/authentication/logout">Logout</a></li>
                    </ul>
                </div>
            {% else %} 

                <div id="popCont" class="left username_view">
                    <p id="signIn"><a href="#">Signin</a></p>
                    <p>/</p>
                    <p id="signUp"><a href="#">Signup</a></p>
                    <div class="clear"></div>
                </div>
            {% endif %}

上述 HTML 的 Jquery AJAX 处理程序:

function authenticateUser(email, password)
            {

            $.ajax({
                url:    '/authentication/login/',
                type:   'POST',
                    cache: 'false',
                    async: 'true',
                data: {

                        signinEmail:email,signinPwd:password, 

                        },
                dataType: "json",   
                    success:function(response){
                                            statusCode = response.statusCode;
                            if (statusCode == 200)
                            {
                                location.reload();


                            }

                        }
                }); 
            }

最佳答案

第一份<div id="topAdminCont" class="left">...</div>到它自己的文件中。比方说,

top_admin.html

{% if userFirstName %}
<div id="topAdminCont" class="left">
    <div id="userSection">
    <!-- <img src="{% static "assets/images/admin_icon.png" %}" width="20" alt="Admin" class="left" /> -->
        <p id="admin" class="right">{{userFirstName}}</p>
        <div class="clear"></div>
    </div>
    <ul id="dropAdmin">
        <li><a href="#" id="chngPwdBut">Change Password</a></li>
        <li><a href="/authentication/logout">Logout</a></li>
    </ul>
</div>
{% else %}
<div id="popCont" class="left username_view">
    <p id="signIn"><a href="#">Signin</a></p>
    <p>/</p>
    <p id="signUp"><a href="#">Signup</a></p>
    <div class="clear"></div>
</div>
{% endif %}

然后在你的当前页面,

current.html

<div id="ajaxSection">
    {% include 'top_admin.html' %}
</div>

现在为 top_admin.html 创建一个新的 View 和 url 规则

urls.py

url(r'^top_admin/$', 'top_admin', name='top_admin'),

views.py

def top_admin(request):
    // your stuff here

    return render(request, 'top_admin.html', {
        // call admin object variables here
    })

最后是你的 ajax 请求,

$.ajax({
    ...
    success: function(response) {
        if (response.statusCode == 200) {
            $('#topAdminCont').load('/app_name/top_admin/');
        }
    },
    ...

显然,您必须更改许多细节(名称、URL 等)以匹配您的应用,但是,此方法将允许您在页面上重新加载内容,而无需重新加载整个页面。

关于jquery - 使用 AJAX 执行 Python Django 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256281/

相关文章:

python - Git:按 merge 顺序提交

javascript - 在 onTime 函数 jwplayer 中只执行一次 ajax 请求

javascript - 如何从 JQuery AJAX 调用返回多个值?

javascript - 带有开放图谱协议(protocol)的 Google+ 片段

javascript - 跟随时使 Canvas 图像指向鼠标

jquery - 如何使 div 覆盖背景图像?

javascript - 有没有办法在 javascript 或 jquery 中创建变量选择器?

python - 如何在 Python 中索引浮点值?

javascript - 使用 Razor 的 JavaScript 中的撇号问题

python - 使用 Crontab 每 30 分钟运行一次 python 脚本?