Javascript Django POST使用Ajax

Javascript Django POST使用Ajax,javascript,jquery,python,ajax,django,Javascript,Jquery,Python,Ajax,Django,我有一个应用程序名register\u login,这个应用程序管理登录和注册操作。我在localhost:8000/登录页面上有一个表单,我希望该按钮重定向到register_登录应用程序中的我的func,但我不能这样做。我是Django Framework的新手。我该怎么办 MAIN url.PY 登录页面.HTML 最后是我的功能。正如我之前所说,它在注册应用程序中 注册登录视图 我尝试更改url,如“/register\u login/success/”、“/register\u log

我有一个应用程序名register\u login,这个应用程序管理登录和注册操作。我在localhost:8000/登录页面上有一个表单,我希望该按钮重定向到register_登录应用程序中的我的func,但我不能这样做。我是Django Framework的新手。我该怎么办

MAIN url.PY 登录页面.HTML 最后是我的功能。正如我之前所说,它在注册应用程序中

注册登录视图 我尝试更改url,如“/register\u login/success/”、“/register\u login/success/”、“/register\u login/success/”、“success/”或“/success/”。什么都不管用


我需要使用该函数,但它没有:(

因为您是通过ajax登录的,所以无法在
测试
视图中重定向。您可以做的是在ajax成功函数中添加重定向。类似如下:

// similar behavior as an HTTP redirect
window.location.replace("/some-url/");
$(function() {
    function readInput() {
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;

        $.ajax({
            type: "POST",
            url: "/success/",
            data: {
                username: username,
                password: password,
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },
            dataType: 'json',
            success : function(json) {
                window.location.replace("/some-url/");
            }
        }); 
    }

    $("#login").click(function(e){
        e.preventDefault();
        readInput();
    });
});

此外,您需要修复javascript代码,在click处理程序中添加preventDefault,并在readInput中删除它。您还需要删除数据对象中的引号,并确保使用了正确的变量。如下所示:

// similar behavior as an HTTP redirect
window.location.replace("/some-url/");
$(function() {
    function readInput() {
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;

        $.ajax({
            type: "POST",
            url: "/success/",
            data: {
                username: username,
                password: password,
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },
            dataType: 'json',
            success : function(json) {
                window.location.replace("/some-url/");
            }
        }); 
    }

    $("#login").click(function(e){
        e.preventDefault();
        readInput();
    });
});

由于您是通过ajax登录的,因此无法在
test
视图中重定向。您可以做的是在ajax成功函数中添加重定向。类似如下:

// similar behavior as an HTTP redirect
window.location.replace("/some-url/");
$(function() {
    function readInput() {
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;

        $.ajax({
            type: "POST",
            url: "/success/",
            data: {
                username: username,
                password: password,
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },
            dataType: 'json',
            success : function(json) {
                window.location.replace("/some-url/");
            }
        }); 
    }

    $("#login").click(function(e){
        e.preventDefault();
        readInput();
    });
});

此外,您需要修复javascript代码,在click处理程序中添加preventDefault,并在readInput中删除它。您还需要删除数据对象中的引号,并确保使用了正确的变量。如下所示:

// similar behavior as an HTTP redirect
window.location.replace("/some-url/");
$(function() {
    function readInput() {
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;

        $.ajax({
            type: "POST",
            url: "/success/",
            data: {
                username: username,
                password: password,
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },
            dataType: 'json',
            success : function(json) {
                window.location.replace("/some-url/");
            }
        }); 
    }

    $("#login").click(function(e){
        e.preventDefault();
        readInput();
    });
});

谢谢你的回复。我需要用ajax访问func(),但我不能:(@Berkin)你的意思是你没有进入
test
方法吗?当我单击“login”按钮时,我需要将用户名和密码变量传递给我的func-its-test-以检查我的数据库变量以进行身份验证。但是在我的情况下,我不能将json传递给我的函数:(@Berkin我已经更新了我的答案,请确保你有jquery,然后检查你在javascript中使用的变量。谢谢你的回复。我需要用ajax更新我的func(),但我不能:(@Berkin你的意思是你没有进入
测试
方法?当我单击“登录”时)按钮,我需要将用户名和密码变量传递给我的func-它的测试-以检查我的数据库变量以进行身份验证。但在我的情况下,我无法将我的json传递给我的函数:(@Berkin我已经更新了我的答案,请确保您有jquery,然后检查您在javascript中使用的变量。