16 comments

[ 4.3 ms ] story [ 46.4 ms ] thread
Instead of creating a cookie manually, you can save 4 lines and use the .set_cookie()[1] method on the response object.

Also, take a look at the render()[2] shortcut function to collapse the template loading, context settings, and rendering steps into one.

[1]: https://docs.djangoproject.com/en/1.3/ref/request-response/#... [2]: https://docs.djangoproject.com/en/1.3/topics/http/shortcuts/...

Also, setting the cookie 'todos' to todolist.id will allow anyone to manipulate the value of that cookie in order to read anyone's cookies.
Further line saving: The << methods >> dictionary isn't needed, it's just mapping lower case strings to upper. Replace:

return methods[request.method](request, item_id)

with:

return request.method.lower(request, item_id)

You can directly implement views based on the request method with django's class based views (View) in 1.3. The dispatch method does almost exactly what your restful function does.

Just inherit from View, and define get(), post(), etc.

(comment deleted)
I was going to suggest this as well. Each resource can be a class that has a function defined for each method.
Or you could create restful APIs simply with django-piston, django-tastypie or (my new personal favorite) django-dagny.
Yes, and there is already a decent wrapper for backbone and tastypie http://joshbohde.com/blog/backbonejs-and-django This is my personal favorite.
Thanks for the recommendation! I'm glad you like it.

As far as wrappers for backbone and tastypie, I think https://github.com/PaulUithol/backbone-tastypie is a pretty good starting point, and a little more complete than what I wrote there.

Oh, I thought they were related until now. This one is actually what I _use_. Yours is what came up in a search.
You can replace the toDict() method in your model with the values() method on the default manager. For example: Todo.objects.values('id', 'order', 'content', 'done').get(pk=x)
his working demo takes you to his router, with the password prefilled. FAIL
It's a dynamic IP so you were pointing to another machine.