On Tue, Nov 11, 2014 at 12:31 PM, Marc Aymerich <glicer...@gmail.com> wrote: > On Tue, Nov 11, 2014 at 6:26 PM, Larry Martell <larry.mart...@gmail.com> > wrote: >> On Tue, Nov 11, 2014 at 12:18 PM, Marc Aymerich <glicer...@gmail.com> wrote: >>> On Tue, Nov 11, 2014 at 5:43 PM, Larry Martell <larry.mart...@gmail.com> >>> wrote: >>>> On Tue, Nov 11, 2014 at 11:00 AM, Marc Aymerich <glicer...@gmail.com> >>>> wrote: >>>>> On Tue, Nov 11, 2014 at 4:48 PM, Larry Martell <larry.mart...@gmail.com> >>>>> wrote: >>>>>> >>>>>> I have a PHP app that I want to convert to django. But I want to do it >>>>>> stages. All the heavy lifting is in the PHP code, so first, I want to >>>>>> just use templates and views to generate the HTML, but still call the >>>>>> PHP code. Then later convert the PHP to python. >>>>>> >>>>>> My issue is that the PHP code expects to get all it's input from the >>>>>> REQUEST object and I've consumed that in the view. Is there any way I >>>>>> can somehow supply that to the PHP code? >>>>>> >>>>>> Is there some way python can communicate like curl ... it needs to >>>>>> send the request string in the body of a POST request to the URL that >>>>>> will route to the PHP script and get the output back. >>>>> >>>>> >>>>> Yes, >>>>> I supose you can extract the needed information from the django >>>>> Request object and call the php script passing the needed variables as >>>>> environment state. >>>>> >>>>> as a guideline you can do something like >>>>> >>>>> cmd = ( >>>>> 'REDIRECT_STATUS=200 ' >>>>> 'REQUEST_METHOD=GET ' >>>>> 'SCRIPT_FILENAME=htdocs/index.php ' >>>>> 'SCRIPT_NAME=/index.php ' >>>>> 'PATH_INFO=/ ' >>>>> 'SERVER_NAME=site.tld ' >>>>> 'SERVER_PROTOCOL=HTTP/1.1 ' >>>>> 'REQUEST_URI=/nl/page ' >>>>> 'HTTP_HOST=site.tld ' >>>>> '/usr/bin/php-cgi' >>>>> ) >>>>> subprocess.Popen(cmd, stdout=subprocess.PIPE) >>>> >>>> Thanks very much Marc. In the example, how is the request string passed in? >>> >>> >>> Yeah, a more complete example would be >>> >>> cmd = ( >>> 'REDIRECT_STATUS={status} ' >>> 'REQUEST_METHOD={method} ' >>> 'SCRIPT_FILENAME={file} ' >>> 'SCRIPT_NAME=/index.php ' >>> 'PATH_INFO={path} ' >>> 'SERVER_NAME=site.tld ' >>> 'SERVER_PROTOCOL=HTTP/1.1 ' >>> 'REQUEST_URI={path} ' >>> 'HTTP_HOST=site.tld ' >>> '/usr/bin/php-cgi' >>> ).format( >>> status=request.status, >>> method=request.method, >>> path=request.path, >>> file=my_php_path_mapper(request.path), >>> ) >>> >>> php = subprocess.Popen(cmd, stdout=subprocess.PIPE) >>> response, err = php.communicate() >>> if php.return_code != 0: >>> return ResponseError(content=err) >>> return Response(content=response) >>> >>> >>> still incomplete and mostly wrong, but good enough to illustrate the >>> main pattern :) >> >> >> So I would put the contents of what I want in the request object in >> the file request.path? > > I just invented the attribute names that django actually uses, but you > can look at the excellent django documentation for the correct ones > > https://docs.djangoproject.com/en/dev/ref/request-response/ > > still this is a toy example and probably it would be a pain in the ass > to really map the mixed URLs between the two web applications.
OK, I see what you're saying now. Thanks. -- https://mail.python.org/mailman/listinfo/python-list