Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a conceptual question about 'translating' between objects I have stored in Django (in Postgres) that I want to use on the front-end. So I have a user object in Python that holds basic things: an id, a username, a password. Let's say I want to output all of that information using Javascript on the client side. Can I just give JS a python object and it will make it into a JS object? I know JS is known for being 'fast and loose' with typing but that just seems absurd!

I'm not looking for syntax, but just an overview of how this would work. Can I put Python objects in AJAX requests, then translate them client side, or is this going to be a basic break-down-things-on-server-side, ship them off, and recombine them on the client side type of thing?

share|improve this question
add comment

3 Answers 3

up vote 2 down vote accepted

You can serialize the data in your Python objects easily and use this data in your Javascript code- as some other answers say, JSON for instance is a fairly multi-language way to represent data which has support for many languages- among them Javascript (JSON is really limited Javascript object literal syntax) and Python.

However, these approaches mostly deal with data. If your Python objects have "behaviour"- namely, they have methods with code, they will be "lost in translation".

Say if you have a Python class with a person's data (name, birth date) but with a method which calculates the person's age (now - birth date), if you encode an object of this class as JSON and use it in Javascript, you won't have the "age" method, you will have to reimplement it.

That is, most inter-language communication methods ship "data" not "objects and classes".

There are approaches that try to communicate "objects and classes"; see Java's RMI for instance, which lets you obtain references to remote objects and invoke methods remotely. However, these things get messy quick- for instance, different languages are well, different, and stuff cannot translate 100% accurately. Also, the semantics of remote method invocation are not trivial, and can rapidly become confusing.

share|improve this answer
    
Okay, but when I serialize will I get the object on the other end, or key-value pairs. I'm not worried about methods, I can either compute the things server-side or client-side. –  Chris Dec 18 '11 at 21:01
    
Depends on the implementation- you can have both. If you have different languages in both ends, generally key-value is simpler. In the specific case of JS, there is not much difference between either as I see it. –  alex Dec 18 '11 at 22:38
add comment

It's called serialize python objects as a string or binary data and deserialize these objects in javascript.

is this going to be a basic break-down-things-on-server-side, ship them off, and recombine them on the client side type of thing?

Yes it is.

Can I put Python objects in AJAX requests, then translate them client side

Yes you can. The actual breaking down, shipping and recombining is so easy that you could do it in a thin ajax abstraction which takes python objects on the server and gives you javascript objects on the client.

share|improve this answer
add comment

Break down and recombine. But it's easy.

http://docs.python.org/library/json.html

http://json.org/

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.