如何在python中为变量分配javascript函数返回值?

如何在python中为变量分配javascript函数返回值?,javascript,jquery,python,html,django,Javascript,Jquery,Python,Html,Django,html代码: <h1>Uploading a photo.</h1> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script> <script type="text/javascript"> var p; var canvas = document.createElement("

html代码:

<h1>Uploading a photo.</h1>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script>
    <script type="text/javascript">
        var p;
        var canvas = document.createElement("canvas");
        var img1=document.createElement("img");

        function converttobyte()
        {
            p=document.getElementById("file").value;
            img1.setAttribute('src', p);
            canvas.width = img1.width;
            canvas.height = img1.height;
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img1, 0, 0);
            var dataURL = canvas.toDataURL("image/png");
            alert("from getbase64 function"+dataURL );
            return dataURL;
        }
    </script>

    <form action="UploadFile" method="post" accept-charset="utf-8" name="UploadFileForm"
                                                   enctype="multipart/form-data">
        <input type="file" id="file" name=""><br>
        <input type="submit" value="Upload" onclick="converttobyte">
    </form>
if
request.method==“post”
之后应该添加什么语句,以便在python脚本中接受函数返回值


请帮帮我。提前感谢

解决问题的一种方法是:

  • 创建一个隐藏字段,如下所示

    <input type="hidden" id="hide" name="URL" value="">
    
  • 表单提交后,隐藏的值将随之出现。在python代码中使用request.GET['URL']访问该字段


  • 希望这能解决问题。

    您的代码有一些问题

    您不应该调用类似于
    onclick=“converttobyte()”
    的方法吗

    converttobyte()
    方法中,当表单提交时,您只需返回
    dataURL
    ,但该值如何传递给POST请求

    您需要在POST请求中传递该值。您可以使用隐藏字段来实现这一点。试着这样做:

    Javascript:

    <h1>Uploading a photo.</h1>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script>
    <script type="text/javascript">
        var p;
        var canvas = document.createElement("canvas");
        var img1=document.createElement("img");
    
        function converttobyte()
        {
            p=document.getElementById("file").value;
            img1.setAttribute('src', p);
            canvas.width = img1.width;
            canvas.height = img1.height;
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img1, 0, 0);
            var dataURL = canvas.toDataURL("image/png");
            alert("from getbase64 function"+dataURL );
    
            /**Set the value of the raw_bytes input field*/
            var form = document.getElementById('uploadForm');
            form.raw_bytes.value = dataURL;
        }
    </script>
    
    <form id="uploadForm" action="UploadFile" method="post" accept-charset="utf-8" name="UploadFileForm"
                                                   enctype="multipart/form-data">
        <input type="file" id="file" name=""><br>
        <input type="hidden" name="raw_bytes" id="raw_bytes" />
        <input type="submit" value="Upload" onclick="converttobyte()">
    </form>
    
    def UploadFile(request):
      if request.method == 'POST':
          raw_bytes = request.POST['raw_bytes'].decode("base64")
    

    在窗体内部创建一个隐藏变量

    <form action="UploadFile" method="post" accept-charset="utf-8" name="UploadFileForm"
                                                       enctype="multipart/form-data">
    
            <input type="hidden" id="url" name="url" value="">  
            <input type="file" id="file" name=""><br>
            <input type="submit" value="Upload" onclick="converttobyte">
    </form>
    
    function convert_to_byte()
            {
                p=document.getElementById("file").value;
                img1.setAttribute('src', p);
                canvas.width = img1.width;
                canvas.height = img1.height;
                var ctx = canvas.getContext("2d");
                ctx.drawImage(img1, 0, 0);
                var dataURL = canvas.toDataURL("image/png");
                alert("from getbase64 function"+dataURL );
                document.getElementById("url").value = dataURL;
            }
    
    然后在提交之后,您可以使用下面的代码来获取python中的值

    if request.method == 'POST':
        url_value = request.POST['url']
    

    感谢您的回复,我已经尝试过了,但是一旦我提交表单,我就得到了异常类型:MultiValueDictKeyError异常值:“'URL'”请尝试在python代码中使用request.POST.get('URL',False)。这是绕过默认值的一种方法,如果没有提供,Hi mayankTUM我也尝试过这种方法,但首先图像文件没有在默认存储中转换为dataurl,它显示的是一个空的文本文件……请帮助我。非常感谢您的回复,兄弟,但我得到了异常类型:MultiValueDictKeyError异常值:“'raw_bytes'”request.POST的输出是什么?图像未转换为警报框中的dataurl,空字符串将附加到“from getbase64 function”中。。
    function convert_to_byte()
            {
                p=document.getElementById("file").value;
                img1.setAttribute('src', p);
                canvas.width = img1.width;
                canvas.height = img1.height;
                var ctx = canvas.getContext("2d");
                ctx.drawImage(img1, 0, 0);
                var dataURL = canvas.toDataURL("image/png");
                alert("from getbase64 function"+dataURL );
                document.getElementById("url").value = dataURL;
            }
    
    if request.method == 'POST':
        url_value = request.POST['url']